因为要迁移服务,我重新搭建了一套环境,然后想在搭建的本地镜像库里把需要的服务pull下来,结果出现了配置文件不生效的问题,具体如下:

配置文件添加:

root@ubuntu:~# vim /etc/default/docker
DOCKER_OPTS="-H 0.0.0.0:2375 --insecure-registry ip:5000"
root@ubuntu:~#

重启:

root@ubuntu:~# /etc/init.d/docker restart
[ ok ] Restarting docker (via systemctl): docker.service.
root@ubuntu:~#

查看服务:

root@ubuntu:~# ps -ef|grep docker
root      7769     1  4 14:46 ?        00:00:00 /usr/bin/dockerd -H fd://
root      7776  7769  0 14:46 ?        00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root      7889  4143  0 14:47 pts/0    00:00:00 grep --color=auto docker
root@ubuntu:~#

发现添加的那一句并没有生效,百度了一下,找到了一种方法:

root@ubuntu:~#  mkdir -p /etc/systemd/system/docker.service.d
root@ubuntu:~# cat /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
root@ubuntu:~#
root@ubuntu:~# systemctl daemon-reload
root@ubuntu:~# service docker restart
root@ubuntu:~# ps -ef|grep [d]ocker
root      7969     1  2 14:58 ?        00:00:00 dockerd -H fd:// -H 0.0.0.0:2375 --insecure-registry ip:5000
root      7982  7969  0 14:58 ?        00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root@ubuntu:~#

可以看到添加的那一句已经生效了。


有的版本可能此方法并不适用,今天就遇到了这种问题,用这种方法服务会报错,通过百度得到了另一种方法:

注意,Ubuntu下文件路径是/lib/systemd/system/docker.service

vim  /lib/systemd/system/docker.service
在[Service]模块添加内容
EnvironmentFile=-/etc/default/docker
-的意思就是忽略错误
然后修改[Service]模块中ExecStart,添加$DOCKER_OPTS,如下
ExecStart=/usr/bin/dockerd -H fd://   $DOCKER_OPTS
还有一种方法是可以不添加EnvironmentFile,直接修改ExecStart,在fd://后面添加你需要添加的东西,如我
ExecStart=/usr/bin/dockerd -H fd://  -H 0.0.0.0:2375 --insecure-registry ip:5000  
记住是用空格分割。
最后重载生效

systemctl daemon-reload
service docker restart







如果觉得此文档帮助到了你,请点赞评论一下,谢谢!