问题:修改/etc/default/Docker文件重启服务后不生效。
环境:
1.Ubuntu Server 16.04.1
2.Docker 1.12.3
过程演示及解决办法:
我们可以通过修改/etc/default/docker文件实现对Docker守护进程的启动配置。
schen@scvmu01:~$ sudo vi /etc/default/docker
schen@scvmu01:~$ grep "^DOCKER_OPTS" /etc/default/docker
DOCKER_OPTS="--label name=docker_server_1"
schen@scvmu01:~$ sudo service docker restart
schen@scvmu01:~$ ps -ef | grep docker
root 28238 1 13 22:39 ? 00:00:01 /usr/bin/dockerd -H fd://
root 28244 28238 0 22:39 ? 00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc
schen 28333 27696 0 22:39 pts/0 00:00:00 grep --color=auto docker
这时我们发现设置并没有生效,这是因为/etc/default/docker文件是为upstart和SysVInit准备的(正如文件第一行注释所言),而使用service命令时并不会读取它,因此我们还需要做如下更改:
schen@scvmu01:~$ sudo mkdir -p /etc/systemd/system/docker.service.d
schen@scvmu01:~$ sudo vi /etc/systemd/system/docker.service.d/Using_Environment_File.conf
[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
~
~
schen@scvmu01:~$ sudo systemctl daemon-reload
schen@scvmu01:~$ sudo service docker restart
schen@scvmu01:~$ ps -ef | grep docker
root 4287 1 0 21:52 ? 00:00:02 dockerd -H fd:// --label name=docker_server_1
root 4296 4287 0 21:52 ? 00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc
schen 4395 2377 0 22:07 pts/1 00:00:00 grep --color=auto docker