Docker修改/etc/default/docker裡的DOCKER_OPTS引數不生效問題解決

思維的深度發表於2018-09-06

需要通過修改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

相關文章