摘要:由于 Linux 不同發(fā)行版所采用的默認(rèn)管理框架的不同,Docker 在不同環(huán)境下所使用的默認(rèn)配置文件也有所不同琐凭。這給初學(xué)者帶來(lái)了極大的困惑和不便芽隆。好消息是,Docker 官方也意識(shí)到了這個(gè)問(wèn)題统屈,所以從 V1.12 開(kāi)始胚吁,引入了并行通用配置文件 ```/etc/docker/daemon.json``` 。從此以后愁憔,用戶(hù)可以在所有平臺(tái)統(tǒng)一通過(guò)調(diào)整該配置文件來(lái)調(diào)整 Docker Engine腕扶。本文對(duì)
由于 Linux 不同發(fā)行版所采用的默認(rèn)管理框架的不同,Docker 在不同環(huán)境下所使用的默認(rèn)配置文件也有所不同吨掌。這給初學(xué)者帶來(lái)了極大的困惑和不便半抱。好消息是,Docker 官方也意識(shí)到了這個(gè)問(wèn)題思犁,所以從 V1.12 開(kāi)始代虾,引入了并行通用配置文件/etc/docker/daemon.json。從此以后激蹲,用戶(hù)可以在所有平臺(tái)統(tǒng)一通過(guò)調(diào)整該配置文件來(lái)調(diào)整 Docker Engine棉磨。本文對(duì)此進(jìn)行簡(jiǎn)要說(shuō)明。
配置文件
通用配置文件 /etc/docker/daemon.json
Docker Engine V1.12 之后版本学辱,用戶(hù)可以自行創(chuàng)建 daemon.json 文件對(duì) Docker Engine 進(jìn)行配置和調(diào)整乘瓤。要點(diǎn)如下:
該文件作為 Docker Engine 的配置管理文件, 里面幾乎涵蓋了所有 docker 命令行啟動(dòng)可以配置的參數(shù)。
不管是在哪個(gè)平臺(tái)以何種方式啟動(dòng), Docker 默認(rèn)都會(huì)來(lái)這里讀取配置策泣。使用戶(hù)可以統(tǒng)一管理不同系統(tǒng)下的 docker daemon 配置衙傀。
相關(guān)參數(shù)的使用說(shuō)明,可以參閱man dockerd幫助信息萨咕,或者參閱官方文檔统抬。
默認(rèn)配置文件目錄及支持的參數(shù)說(shuō)明:
Linux:/etc/docker/daemon.json, 支持的完成參數(shù)配置示例如下(最新的支持參數(shù)列表可以參閱官方文檔):{ "authorization-plugins": [], "data-root": "", "dns": [], "dns-opts": [], "dns-search": [], "exec-opts": [], "exec-root": "", "experimental": false, "storage-driver": "", "storage-opts": [], "labels": [], "live-restore": true, "log-driver": "", "log-opts": {}, "mtu": 0, "pidfile": "", "cluster-store": "", "cluster-store-opts": {}, "cluster-advertise": "", "max-concurrent-downloads": 3, "max-concurrent-uploads": 5, "default-shm-size": "64M", "shutdown-timeout": 15, "debug": true, "hosts": [], "log-level": "", "tls": true, "tlsverify": true, "tlscacert": "", "tlscert": "", "tlskey": "", "swarm-default-advertise-addr": "", "api-cors-header": "", "selinux-enabled": false, "userns-remap": "", "group": "", "cgroup-parent": "", "default-ulimits": {}, "init": false, "init-path": "/usr/libexec/docker-init", "ipv6": false, "iptables": false, "ip-forward": false, "ip-masq": false, "userland-proxy": false, "userland-proxy-path": "/usr/libexec/docker-proxy", "ip": "0.0.0.0", "bridge": "", "bip": "", "fixed-cidr": "", "fixed-cidr-v6": "", "default-gateway": "", "default-gateway-v6": "", "icc": false, "raw-logs": false, "allow-nondistributable-artifacts": [], "registry-mirrors": [], "seccomp-profile": "", "insecure-registries": [], "disable-legacy-registry": false, "no-new-privileges": false, "default-runtime": "runc", "oom-score-adjust": -500, "runtimes": { "runc": { "path": "runc" }, "custom": { "path": "/usr/local/bin/my-runc-replacement", "runtimeArgs": [ "--debug" ] } } }
Windows:%programdata%\docker\config\daemon.json,支持的完成參數(shù)配置示例如下(最新的支持參數(shù)列表可以參閱官方文檔):{ "authorization-plugins": [], "data-root": "", "dns": [], "dns-opts": [], "dns-search": [], "exec-opts": [], "experimental": false, "storage-driver": "", "storage-opts": [], "labels": [], "log-driver": "", "mtu": 0, "pidfile": "", "cluster-store": "", "cluster-advertise": "", "max-concurrent-downloads": 3, "max-concurrent-uploads": 5, "shutdown-timeout": 15, "debug": true, "hosts": [], "log-level": "", "tlsverify": true, "tlscacert": "", "tlscert": "", "tlskey": "", "swarm-default-advertise-addr": "", "group": "", "default-ulimits": {}, "bridge": "", "fixed-cidr": "", "raw-logs": false, "allow-nondistributable-artifacts": [], "registry-mirrors": [], "insecure-registries": [], "disable-legacy-registry": false }
不同框架的配置文件
不同 Linux 發(fā)行版本默認(rèn)使用的管理框架可能存在不同。而不同管理框架下配置文件的架構(gòu)差異聪建,最終導(dǎo)致了不同環(huán)境下默認(rèn) Docker 配置文件目錄和文件名的不同钙畔。Linux 常見(jiàn)管理框架下的默認(rèn)配置文件說(shuō)明如下:
| 管理框架類(lèi)型 | 默認(rèn)使用該框架的操作系統(tǒng) | Docker 默認(rèn)配置文件 | 相關(guān)操作指令 |
| - | - | - | - |
|Sysvinit| CentOS 6.x, Ubuntu 12.04 等| /etc/default/docker | CentOS: service docker restart
Ubuntu: /etc/init.d/docker restart |
|Upstart| Ubuntu 14.x,15.x 等| /etc/default/docker| restart docker |
|Systemd| CentOS 7+,Ubunt 16+金麸,Debian擎析,RHEl 7, Fedora, Archlinux 等| Ubuntu/CentOS/: /lib/systemd/system/docker.service
RHEL/CentOS: /usr/lib/systemd/system/docker.service | systemctl restart docker.service |
配置文件修改說(shuō)明
參閱前述說(shuō)明,對(duì)配置文件調(diào)整后挥下,注意如下要點(diǎn):
修改配置后揍魂,需要重啟 docker 服務(wù)生效。當(dāng)前主流的 Sytemd 框架相關(guān)平臺(tái)(CentOS 7+棚瘟,Ubunt 16+ 等)的重啟指令如下:systemctl daemon-reolad systemctl restart docker.service
配置沖突
如果通用配置文件 /etc/docker/daemon.json 和上述默認(rèn)配置文件中有配置沖突(相同配置項(xiàng)分別配置了不同值)现斋,那么 Docker daemon 啟動(dòng)時(shí)會(huì)報(bào)錯(cuò)。比如解取,如果在 Ubuntu 16.04 系統(tǒng)中步责,同時(shí)在 /etc/docker/daemon.json 和 /lib/systemd/system/docker.service 中指定了--dns=屬性,那么 Docker daemon 會(huì)啟動(dòng)失敗禀苦,相關(guān)錯(cuò)誤信息示例如下:
[root@node3 ~]# systemctl start docker.serviceJobfordocker.service failed because the controlprocessexitedwitherrorcode. See"systemctl status docker.service"and"journalctl -xe"fordetails.[root@node3 ~]# systemctl status docker.service● docker.service - Docker Application Container Engine? Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)? Active: failed (Result:exit-code) since Wed2017-11-1515:57:16CST;2min29s ago? ? Docs: https://docs.docker.comProcess:30610ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0-H fd://--dns=223.5.5.5 --dns=223.6.6.6 (code=exited,Main PID:30610(code=exited, status=1/FAILURE)Nov1515:57:16c400e32b9e7cd46aea0d484ad260f4e4a-node3 systemd[1]: Starting Docker Application Container Engine...Nov1515:57:16c400e32b9e7cd46aea0d484ad260f4e4a-node3 dockerd[30610]: unabletoconfigure the Docker daemonwithfile/etc/docker/daemon.json: the following directives are specified both as a flagandintheconfigurationfile: dns: (from flag: [223.5.5.5223.6.6.6], fromfile: [114.114.114.1148.8.8.8])Nov1515:57:16c400e32b9e7cd46aea0d484ad260f4e4a-node3 systemd[1]: docker.service: Mainprocessexited, code=exiteNov1515:57:16c400e32b9e7cd46aea0d484ad260f4e4a-node3 systemd[1]: Failedtostart Docker Application Container EnNov1515:57:16c400e32b9e7cd46aea0d484ad260f4e4a-node3 systemd[1]: docker.service: Unit entered failed state.Nov1515:57:16c400e32b9e7cd46aea0d484ad260f4e4a-node3 systemd[1]: docker.service: Failedwithresult'exit-code'.lines1-13/13(END)
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)蔓肯,本社區(qū)不擁有所有權(quán),也不承擔(dān)相關(guān)法律責(zé)任振乏。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容蔗包,歡迎發(fā)送郵件至:yqgroup@service.aliyun.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù)慧邮,一經(jīng)查實(shí)调限,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。