上一篇总结了Docker的CS模式的具体概念,本篇来学习Docker守护进程的配置和操作。

在上一篇的演示中,我们使用了Linux的ps命令查看了Docker守护进程的运行状态。那么,除了ps命令,我们也可以使用Docker提供的“service docker status  ”命令来查看Docker守护进程的运行状态:

【Docker学习总结】12.Docker守护进程的配置和操作_labels


通过Active状态为“active(running)”可以看出,Docker守护进程服务为激活状态,正在运行。其中Main PID就是返回的Docker的进程ID。

注:如果Linux当前用户为root,实际上无需添加sudo命令,如果不是root用户,需要添加sudo来执行管理员级别的指令,前提是该账户的该指令root用户给了授权。

一、Docker守护进程的启停

下面我们来学习如何启动、停止和重启Docker的守护进程。
我们需要使用到Linux的service命令,相关的操作如下:
sudo service docker start
sudo service docker stop
sudo service docker restart

我们使用“stop”命令停止Docker守护进程:

【Docker学习总结】12.Docker守护进程的配置和操作_docker_02


可以看到,执行完停止命令后,查看status状态时,Active状态为“inactive(dead)”,即Docker守护进程的状态为“未激活”,即相关后台服务已经被杀死(dead)。

然后我们执行“start”启动Docker守护进程:

【Docker学习总结】12.Docker守护进程的配置和操作_docker_03


可以看到,执行完启动命令后,查看status状态时,Active状态为“active(running)”已激活状态。可以注意到,此时Dock守护进程的进程ID(PID),也已经更新为新启动服务的进程ID了。

而“restart”重启命令,实际上是先执行了“stop”命令来停止服务,后执行了“start”命令;来启动服务。

当我们修改了Docker的启动配置时,就需要使用service命令来重新启动Docker服务,以使得修改的配置能够得到应用。

二、Docker的启动选项

Docker针对不同的应用场景,为守护进程提供了非常丰富的启动配置选项。而这种配置选项,是通过如下格式来运行的:
docker -d [OPTIONS]
其中-d是代表以“守护”的方式来运行Docker的程序,后面的“[OPTIONS]”就是守护进程的配置选项,Docker提供了非常丰富的配置选项,如下:
1.Docker守护进程相关
与Docker守护进程相关的运行选项,它包含了Docker的目录、日志级别、进程id、写入文件的地址、debug模式的开启以及docker运行时使用的驱动模式等等:

-D, --debug=false

 debug模式的开启

-e, --exec-driver="native"

docker运行时使用的驱动模式

-g, --graph="/var/lib/docker"

设置Docker运行时根目录

--icc=true

设置启用内联容器的通信。

-l,--log-level="info"

 docker的日志级别指定

--label=[]

docker标签

-p, --pidfile="/var/run/docker.pid"

设置后台进程PID文件路径。

 2.Docker服务器连接相关

-G, --group="docker"

在后台运行模式下,赋予指定的Group到相应的unix socket上。注意,当此参数 --group 赋予空字符串时,将去除组信息

-H, --host=[]

设置后台模式下指定socket绑定,可以绑定一个或多个 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。如:$ docker -H tcp://0.0.0.0:2375 ps 或者$ export DOCKER_HOST="tcp://0.0.0.0:2375"$ docker ps

--tls=false

设置是否使用TLS

--tlscacert="/home/sven/.docker/ca.pem"

设置要在远程证书中使用的CA证书文件的路径

--tlscert="/home/sven/.docker/cert.pem"

设置证书文件路径

--tlskey="/home/sven/.docker/key.pem"

设置密匙文件路径

--tlsverify=false

使用TLS远程证书,守护进程与客户端全部使用证书验证

 3.Remote API相关

--api-enable-cors=false

设置是否允许远程API调用。

4.存储相关

-s, --storage-driver=""

设置容器运行时使用指定的存储驱动,如,指定使用devicemapper,可以这样:docker -d -s devicemapper

--selinux-enabled=false

设置启用selinux支持

--storage-opt=[]

设置存储驱动的参数

5.Registry(仓库连接)相关

--insecure-registry=[]

使用私有证书搭建docker注册服务器时,设置docker注册服务器域名

--registry-mirror=[]

设置docker registry 的镜像地址

我们在后面的学习中,会用到该选项来配置Docker的镜像连接。

6.网络设置相关

-b, --bridge=""

使用事先创建的网桥接口。若设置为none,则不在容器内使用网络

--bip=""

使用CIDR标记法设置docker 的IP带宽。该选项不能与-b选项同时使用

--fixed-cidr=""

固定分配IPv4地址的带宽。该IP地址必须在-b选项设置的网桥网络或--bip设置的IP网段内

--fixed-cidr-v6=""

设置 IPv6子网

--dns=[]

设置容器使用DNS服务器。例如: docker -d --dns 8.8.8.8

--dns-search=[]

设置容器使用指定的DNS搜索域名。如: docker -d --dns-search example.com

--ip=0.0.0.0

设置容器绑定IP时使用的默认IP地址

--ip-forward=true

设置启动容器的 net.ipv4.ip_forward

--ip-masq=true

为网桥上的IP地址开启IP伪装(masquerading)

--iptables=true

设置启动Docker容器自定义的iptable规则

--ipv6=false

设置是否使用ipv6子网

--mtu=0      

设置容器网络的MTU值,如果没有这个参数,选用默认 route MTU,如果没有默认route,就设置成常量值 1500。

这些网络选项为Docker的运行提供了非常大的灵活性。

上面我们对Docker的配置选项进行了简单的介绍,为的是告诉大家Docker有非常灵活的设置模式,有关这些选项的详细剖析,在后面的学习中,在相应的使用场景中在更详细的介绍。
同时也可以登录Docker官方网站,来查看Docker这些配置选项的具体含义:
​​​https://docs.docker.com/reference/commandline/cli​

我们知道了Docker有如此多的配置选项,但是Docker服务的启动,并不是通过命令行来启动的,那么这些选项怎样应用到Docker守护进程启动的过程中呢?这里就需要介绍Docker的启动配置文件:
(1)老版
在1.12版本后之前,由于不同操作系统不同的init初始化系统,Docker的初始化配置文件根据不同的系统放置在不同的位置,在Ubuntu 中的位置是:/etc/default/docker,在CentOS中的位置是:/etc/sysconfig/docker
(2)新版
1.12版本后, 用户可以自行创建 /etc/docker/daemon.json 该文件, 该文件是 docker 进程的配置管理文件, 里面几乎包含了所有 docker 命令行启动可以配置的参数, 不管是哪个平台, 不管是以何种方式启动, 默认都会来这里读取配置。

我们把需要配置的启动配置编写进Docker的启动配置文件即可。

下面进行演示,使用“vim”来打开docker的启动配置文件(使用daemon.json文件配置方式):

【Docker学习总结】12.Docker守护进程的配置和操作_labels_04


我们进入编辑状态,为其添加一个启动选项:

【Docker学习总结】12.Docker守护进程的配置和操作_labels_05


这里我们添加一个“lebel选项”:

"labels":["nodeName=docker_server_1"]

“lebel选项”可以定义一个key-value的值,而这个值可以在“docker info”命令中查看到。

我们将该文件保存并退出,然后重启docker守护进程:

【Docker学习总结】12.Docker守护进程的配置和操作_docker_06


此时使用“docker info”命令,查看docker守护进程的运行情况,可以看到刚刚配置的选项已经加在了docker守护进程的启动配置选项中。

三、小结

本篇学习了以下知识点:
1.查看Docker守护进程的运行状态
2.启动、停止、重启Docker守护进程
3.Docker守护进程的启动选项
4.修改Docker守护进程的启动配置

参考资料:
《极客学院Docker学习》教学视频