修改etc-default-docker文件不生效的解决办法

问题:修改/etc/default/docker文件重启服务后不生效。

环境:

  • Ubuntu Server 16.04.1
  • 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文件是为upstartSysVInit准备的(正如文件第一行注释所言),而使用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

有关此问题的参考文献:

  • https://github.com/docker/docker/issues/9889
  • http://docs.master.dockerproject.org/engine/admin/systemd/

你可能感兴趣的:(经验积累,Ubuntu,Docker)