centos 部署docker容器 安装 、基本使用方法(一)

简介: centos 部署docker容器 安装 、基本使用方法(一)

实验环境: CENTOS 7.4

官方网站:https://www.docker.com/

源代码下载:https://github.com/docker/docker.github.io

安装说明 https://docs.docker.com/compose/install/#prerequisites

docker容器技术和虚拟机对比:

相同点: docker容器技术和虚拟机技术,都是虚拟化技术。

docker相对于VM虚拟机,少了虚拟机操作系统这一层,所以docker效率比虚拟机高

 

一、安装 直接使用centos系统自带的yum源安装

yum -y install docker  

启动docker平台:

[root@146~]# systemctl start docker   #启动 docker 服务

[root@146~]# systemctl enable docker  #设置开机启动docker服务

[root@146~]# docker version   #显示 Docker 版本信息

查看 docker 信息(确认服务运行)显示 Docker 系统信息,包括镜像和容器数。

info信息中 :

Network: bridge host macvlan null overlay #桥接到主机的 docker0 上,在物理机上执行ifconfig 可以看到 docker0 桥设备

Docker Root Dir: /var/lib/docker ##默认的 docker 的家目录

Registry: https://index.docker.io/v1/ #默认的 dockerhub 的镜像源

 

建立 docker 用户组(参考)

默认情况下, docker  命令会使用 Unix socket 与 Docker 引擎通讯。而只有root  用户和  docker  组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用  root  用户。因此,更好地做法是将需要使用  docker  的用户加入  docker  用户组。建立  docker  组:        $ sudo groupadd docker

将当前用户加入  docker  组:              $ sudo usermod -aG docker $USER

 

下载docker镜像

[root@146~]# docker search centos  #从 Docker Hub 中搜索符合条件的镜像。

名字                        描述                             受欢迎受欢迎程度  是否官方提供

如果OFFICIAL 为[ok] ,说明可以放心使用。

方法1:从公网docker hub 拉取(下载)image   pull:拉

[root@146~]# docker pull docker.io/centos

(#报错了,因为网络的问题。 无法连接到dockerhub 下载镜像。 如果你的网络没有问题,你可以下载。)

方法2:163镜像

[root@146 ~]# docker pull hub.c.163.com/library/tomcat:latest

[root@146 ~]# docker images

REPOSITORY                     TAG           IMAGE ID            CREATED             SIZE

hub.c.163.com/library/tomcat   latest         72d2be374029        4 months ago        292.4 MB

查看 images 列表

[root@146 ~]# docker images  #列出本地所有镜像。其中 [name] 对镜像名称进行关键词查询。

[root@146 ~]# docker images

 

请开启动网络转发功能 否则回报IPV4的错误

开启动网络转发功能,默认会自动开启.

手动开启:
[root@146 ~]# vim /etc/sysctl.conf  #插入以下内容   (也可以 echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf  直接添加)
net.ipv4.ip_forward = 1
[root@146 ~]# sysctl  -p   #生效
net.ipv4.ip_forward = 1
[root@146 ~]# cat /proc/sys/net/ipv4/ip_forward
1

否则会报错以下警告: WARNING: iPv4 forwarding is disabled network will not work 的处理

 

虚悬镜像

上面的镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有

标签,均为  <none>  。:

<none> <none> 00285df0df87 5 d

ays ago 342 MB

这个镜像原本是有镜像名和标签的,原来为  mongo:3.2  ,随着官方镜像维护,发布了新版本后,重新  docker pull mongo:3.2  时, mongo:3.2  这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消,从而成为了<none>  。除了  docker pull  可能导致这种情况, docker build  也同样可以导致这种现象。由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为  <none>  的镜像。

这类无标签镜像也被称为 虚悬镜像(dangling image)

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命

令删除。

$ docker rmi $(docker images -q -f dangling=true)

二、docker平台基本使用方法

例1:运行一个 container并加载镜像centos,运行起来这个实例后,在实例中执行 /bin/bash命令

docker常用参数:

run  运行

-i   以交互模式运行容器,通常与 -t 同时使用;

-t  为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-d 后台运行   再次进入一个正在运行的容器   docker attach   id或name  

[root@146~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

docker.io/centos    latest              196e0ce0c9fb        12 days ago         196.6 MB

[root@146~]# docker run  -it docker.io/centos:latest /bin/bash   #启动一个实例,也就2秒就可以搞定

[root@068fd8c70344 /]# ls   #查看实例环境

[root@f072b5ae7542 /]# cat /etc/redhat-release

退出容器:

[root@f072b5ae7542 /]#exit

 

例2:在 container 中启动一个长久运行的进程,不断向stdin输出 hello world 。模拟一个后台运行的服务

docker常用参数:

-d  后台运行容器,并返回容器ID;

-c 后面跟待完成的命令

[root@146~]# docker run  -d docker.io/centos:latest /bin/sh -c "while true;do echo hello world; sleep 1; done"

1b3493487c4fde6eb233d59fa9ab9a204ad993cd3debbd5a9a28be6816694605

#容器的ID

从一个容器中取日志,查看输出的内容

语法: docker  logs   容器实例的Name/ID  

[root@146~]# docker logs 1b3493487c4    #容器的ID可以写全,也可以不写全,只要唯一就可以了

查看正在运行的容器:

[root@146~]# docker ps  #列出所有运行中容器。

[root@146~]# docker ps -a  #-a 列出所有容器(含沉睡/退出状态的容器);

例3:杀死一个容器。 比如:杀死一个正在后台运行的容器

杀死ID为c4a213627f1b容器

[root@146~]# docker kill c4a213627f1b #杀死一个容器

[root@146~]# docker stop 1a63ddea6571 #关闭容器

[root@146~]# docker restart 1a63ddea6571 #重启

删除指定 container : rm

[root@146~]# docker rm  e085da6919af

[root@146~]# docker rm -f 1a63ddea6571 #强制删除

删除镜像 :decker rmi 镜像id  

.docker 特性:

文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。

资源隔离:系统资源,像 CPU 和内存等可以分配到丌同的容器中,使用 cgroup。

网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和 IP 地址。

日志记录:Docker 将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。

变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或手劢配置。

交互式 shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互 shell。

优点:

1.一些优势和 VM 一样,但不是所有都一样。

比 VM 小,比 VM 快,Docker 容器的尺寸减小相比整个虚拟机大大简化了分布到云和从云分发时间和开销。Docker 启劢一个容器实例时间徆短,一两秒就可以启劢一个实例。

2.对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT 的发布速度更快。

Docker 是一个开放的平台,构建,发布和运行分布式应用程序。

Docker 使应用程序能够快速从组件组装和避免开发和生产环境乊间的摩擏。

3.您可以在部署在公司局域网或云或虚拟机上使用它。

4.开发人员并丌关心具体哪个 Linux 操作系统

使用 Docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们所选择的操作系统。

然后,在部署时一切是完全一样的,因为一切都在 DockerImage 的容器在其上运行。

开发人员负责并且能够确保所有的相关性得到满足。

5.Google,微软,亚马逊,IBM 等都支持 Docker。

6.Docker 支持 Unix/Linux 操作系统,也支持 Windows 或 Mac

缺点局限性:

1.Docker 用于应用程序时是最有用的,但并丌包含数据。日志,跟踪和数据库等通常应放在 Docker

容器外。 一个容器的镜像通常都徆小,丌适合存大量数据,存储可以通过外部挂载的方式使用。比如使用:

NFS,ipsan,MFS 等, -v 映射磁盘分区

一句话:docker 叧用于计算,存储交给别人。

oracle  不适合使用 docker 来运行,太大了,存储的数据太多

---------------------

 

 

目录
相关文章
|
8月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
3708 4
|
8月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
387 5
|
9月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
1524 3
docker 安装 Postgres 17.6
|
8月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
2584 8
|
8月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
865 6
|
8月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
7458 8
|
8月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
695 2
|
8月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1118 4
|
10月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1295 108