Docker修改/etc/default/docker里的DOCKER_OPTS参数不生效问题解决

需要通过修改docker.service文件来使DOCKER_OPTS参数生效,

由于Docker版本不同docker.service文件路径及内容可能会有差异,所以可能需要以下两种方法之一

方法一:docker.service路径为/usr/lib/systemd/system/docker.service

配置docker.service的时候,EnvironmentFile的文件默认配置了/etc/sysconfig/docker(基本配置)、/etc/sysconfig/docker-storage(存储)、/etc/sysconfig/docker-network(网络),我们想要/etc/default/docker 生效,我们就需要添加EnvironmentFile=-/etc/default/docker,让后在ExecStart这个配置中,添加引用的参数$DOCKER_OPTS,下面就是我的配置文件/usr/lib/systemd/system/docker.service

#修改配置文件
vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=all
KillMode=process
#添加我们自定义的配置文件
EnvironmentFile=-/etc/default/docker #添加配置文件,(-代表ignore error)
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $DOCKER_OPTS #需要引用的参数,也是网卡设定参数
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave

[Install]
WantedBy=multi-user.target
EnvironmentFile=-/etc/default/docker

修改以后,需要重载,然后重启服务才可以使用/etc/default/docker里定义的DOCKER_OPTS参数

#重载
systemctl daemon-reload
#重启docker服务
service docker restart 

这里写图片描述

docker环境配置文件

vi /etc/sysconfig/docker
DOCKER_OPTS="-b=br0"

#或者直接写数据
 echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker

docker自定义网桥

#安装网桥工具
yum install bridge-utils  

#添加网桥
brctl addbr br0

#查看网桥
brctl show 

#设定网桥地址和子网掩码
ifconfig br0 192.168.110.1 netmask 255.255.255.0

#设定网桥
echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker

#配置docker
vi /usr/lib/systemd/system/docker.service
#添加我们自己的配置文件
EnvironmentFile=-/etc/sysconfig/docker
#应用参数
ExecStart=/usr/bin/dockerd-current \
               --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
                --default-runtime=docker-runc \
                --exec-opt native.cgroupdriver=systemd \
                --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
                $OPTIONS \
                $DOCKER_STORAGE_OPTIONS \
                $DOCKER_NETWORK_OPTIONS \
                $ADD_REGISTRY \
                $BLOCK_REGISTRY \
                $INSECURE_REGISTRY \
                $DOCKER_OPTS #添加网桥的参数

#重载
systemctl daemon-reload
#重启docker服务
service docker restart 

修改成功 后的网桥信息
这里写图片描述

查看网桥数据
这里写图片描述

网桥修改成功后,网卡的网段和子网掩码都修改了
这里写图片描述

方法二:docker.service所在路径 /lib/systemd/system/docker.service

1.编辑并修改

vi  /lib/systemd/system/docker.service 文件 添加一行

EnvironmentFile=-/etc/default/docker(-代表ignore error)

并修改ExecStart=/usr/bin/docker daemon -H fd://

改成

ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS

这样才可以使用/etc/default/docker 里定义的DOCKER_OPTS参数

2.重新加载并重启docker服务

  1)  重载

  systemctl daemon-reload   --->重载

  2)重启docker服务

    service docker restart

注:如果重载后重启docker出错:

  这时应该去检查/etc/default/docker文件中发参数是否书写正确,如果是正确的那应该启动是正常的。

原文地址:https://blog.csdn.net/yelllowcong/article/details/76405191

http://blog.sina.com.cn/s/blog_979b9b9e0102wl1l.html

猜你喜欢

转载自blog.csdn.net/skh2015java/article/details/82466485