Docker Engine V1.12 之后版本,用戶可以自行創(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ì)來這里讀取配置。使用戶可以統(tǒng)一管理不同系統(tǒng)下的 docker daemon 配置球及。
- 相關(guān)參數(shù)的使用說明氧骤,可以參閱
man dockerd
幫助信息,或者參閱官方文檔吃引。
該--config-file
選項(xiàng)允許您以JSON格式為守護(hù)程序設(shè)置任何配置選項(xiàng)筹陵。此文件使用與鍵相同的標(biāo)志名稱,但允許多個(gè)條目的標(biāo)志除外镊尺,它使用多個(gè)標(biāo)志名稱朦佩,例如,labels
用于label
標(biāo)志庐氮。
配置文件中設(shè)置的選項(xiàng)不得與通過flags設(shè)置的選項(xiàng)沖突语稠。如果文件和標(biāo)志之間的選項(xiàng)重復(fù),則docker守護(hù)程序無法啟動(dòng)弄砍,無論其值如何仙畦。我們這樣做是為了避免靜默忽略配置重新加載中引入的更改输涕。例如,如果在配置文件中設(shè)置守護(hù)程序標(biāo)簽并且還通過--label
標(biāo)志設(shè)置守護(hù)程序標(biāo)簽议泵,則守護(hù)程序無法啟動(dòng)。守護(hù)程序啟動(dòng)時(shí)將忽略文件中不存在的選項(xiàng)桃熄。
Linux上配置文件的默認(rèn)位置是 /etc/docker/daemon.json
先口。該--config-file
標(biāo)志可用于指定非默認(rèn)位置。
{
"authorization-plugins": [],
"data-root": "",
#Docker運(yùn)行時(shí)使用的根路徑,根路徑下的內(nèi)容稍后介紹瞳收,默認(rèn)/var/lib/docker
"dns": [],
#設(shè)定容器DNS的地址碉京,在容器的 /etc/resolv.conf文件中可查看
"dns-opts": [],
#容器 /etc/resolv.conf 文件,其他設(shè)置
"dns-search": [],
#設(shè)定容器的搜索域螟深,當(dāng)設(shè)定搜索域?yàn)?.example.com 時(shí)谐宙,在搜索一個(gè)名為 host 的 主機(jī)時(shí),DNS不僅搜索host界弧,還會(huì)搜索host.example.com凡蜻。注意:如果不設(shè)置,Docker 會(huì)默認(rèn)用主機(jī)上的 /etc/resolv.conf來配置容器垢箕。
"exec-opts": [],
"exec-root": "",
"experimental": false,
"features": {},
"storage-driver": "",
"storage-opts": [],
"labels": [],
#docker主機(jī)的標(biāo)簽划栓,很實(shí)用的功能,例如定義:–label nodeName=host-121
"live-restore": true,
"log-driver": "",
"log-opts": {},
"mtu": 0,
"pidfile": "",
#Docker守護(hù)進(jìn)程的PID文件
"cluster-store": "",
"cluster-store-opts": {},
"cluster-advertise": "",
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5,
"default-shm-size": "64M",
"shutdown-timeout": 15,
"debug": true,
#啟用debug的模式,啟用后条获,可以看到很多的啟動(dòng)信息忠荞。默認(rèn)false
"hosts": [],
#設(shè)置容器hosts
"log-level": "",
"tls": true,
#默認(rèn) false, 啟動(dòng)TLS認(rèn)證開關(guān)
"tlscacert": "",
#默認(rèn) ~/.docker/ca.pem,通過CA認(rèn)證過的的certificate文件路徑
"tlscert": "",
#默認(rèn) ~/.docker/cert.pem 帅掘,TLS的certificate文件路徑
"tlskey": "",
#默認(rèn)~/.docker/key.pem委煤,TLS的key文件路徑
"tlsverify": true,
#默認(rèn)false,使用TLS并做后臺(tái)進(jìn)程與客戶端通訊的驗(yàn)證
"tls": true,
"tlsverify": true,
"tlscacert": "",
"tlscert": "",
"tlskey": "",
"swarm-default-advertise-addr": "",
"api-cors-header": "",
"selinux-enabled": false,
#默認(rèn) false修档,啟用selinux支持
"userns-remap": "",
"group": "",
#Unix套接字的屬組,僅指/var/run/docker.sock
"cgroup-parent": "",
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
},
"init": false,
"init-path": "/usr/libexec/docker-init",
"ipv6": false,
"iptables": false,
"ip-forward": false,
#默認(rèn)true, 啟用 net.ipv4.ip_forward ,進(jìn)入容器后使用sysctl -a|grepnet.ipv4.ip_forward查看
"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": [],
#鏡像加速的地址碧绞,增加后在 docker info中可查看。
"seccomp-profile": "",
"insecure-registries": [],
#配置docker的私庫(kù)地址
"no-new-privileges": false,
"default-runtime": "runc",
"oom-score-adjust": -500,
"node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],
"runtimes": {
"cc-runtime": {
"path": "/usr/bin/cc-runtime"
},
"custom": {
"path": "/usr/local/bin/my-runc-replacement",
"runtimeArgs": [
"--debug"
]
}
},
"default-address-pools":[{"base":"172.80.0.0/16","size":24},
{"base":"172.90.0.0/16","size":24}]
}
注意:您不能將
daemon.json
已在守護(hù)程序啟動(dòng)時(shí)設(shè)置的選項(xiàng)設(shè)置為標(biāo)志吱窝。在systemd
用于啟動(dòng)Docker守護(hù)程序的系統(tǒng)上-H
已設(shè)置头遭,因此您無法使用該hosts
鍵daemon.json
來添加偵聽地址。有關(guān)如何使用systemd drop-in文件完成此任務(wù)癣诱,請(qǐng)參閱https://docs.docker.com/engine/admin/systemd/#custom-docker-daemon-options计维。
修改配置文件之后需要重啟docker生效
systemctl restart docker.service
參考資料: