docker18.09.3修改守护进程配置文件不生效问题
在/etc/default/docker下添加DOCKER_OPTS选项,使用docker info或ps -ef | grep docker检查配置文件不生效
网上主要有两种解决方法单这两种方法都是老版本docker的解决方法,对于docker18以后的版本不适用
1、修改/usr/lib/systemd/system/docker.service这个文件,
在[Service]下添加 EnvironmentFile=-/etc/default/docker,在ExecStart末尾增加 $DOCKER_OPTS ,但其实在docker19后的版本中/usr/lib/systemd下并没有system目录。
2、创建/etc/systemd/system/docker.service.d/Using_Environment_File.conf 这个文件,然后写入以下内容:
[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
这个也和上边原因一样,是老版本的解决方法,对于docker19并不适用
解决方法:
其实网上的第一种方法没有错只是在docker19中docker.service文件从/usr/lib/systemd/system/docker.service移到了/lib/systemd/system/docker.service,
所以打开/lib/systemd/system/docker.service文件,修改[service]栏,在[service]栏添加EnvironmentFile=-/etc/default/docker和在ExecStart=/usr/bin/dockerd -H fd://后添加$DOCKER_OPTS,注意有空格不然会报错。
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
代码段如下:
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
修改后重载docker配置文件 sudo systemctl daemon-reload ,重启docker服务 sudo service docker restart,
使用docker info或ps -ef | grep docker检查配置文件,发现已生效。