Docker Engine V1.12 之後版本,用戶可以自行創建 daemon.json 文件對 Docker Engine 進行配置和調整。要點如下:
- 該文件作爲 Docker Engine 的配置管理文件, 裏面幾乎涵蓋了所有 docker 命令行啓動可以配置的參數。
- 不管是在哪個平臺以何種方式啓動, Docker 默認都會來這裏讀取配置。使用戶可以統一管理不同系統下的 docker daemon 配置。
- 相關參數的使用說明,可以參閱
man dockerd
幫助信息,或者參閱官方文檔。
該 --config-file
選項允許您以JSON格式爲守護程序設置任何配置選項。此文件使用與鍵相同的標誌名稱,但允許多個條目的標誌除外,它使用多個標誌名稱,例如,labels
用於label
標誌。
配置文件中設置的選項不得與通過flags設置的選項衝突。如果文件和標誌之間的選項重複,則docker守護程序無法啓動,無論其值如何。我們這樣做是爲了避免靜默忽略配置重新加載中引入的更改。例如,如果在配置文件中設置守護程序標籤並且還通過 --label
標誌設置守護程序標籤,則守護程序無法啓動。守護程序啓動時將忽略文件中不存在的選項。
Linux上配置文件的默認位置是 /etc/docker/daemon.json
。該--config-file
標誌可用於指定非默認位置。
{
"authorization-plugins": [],
"data-root": "",
#Docker運行時使用的根路徑,根路徑下的內容稍後介紹,默認/var/lib/docker
"dns": [],
#設定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看
"dns-opts": [],
#容器 /etc/resolv.conf 文件,其他設置
"dns-search": [],
#設定容器的搜索域,當設定搜索域爲 .example.com 時,在搜索一個名爲 host 的 主機時,DNS不僅搜索host,還會搜索host.example.com。注意:如果不設置,Docker 會默認用主機上的 /etc/resolv.conf來配置容器。
"exec-opts": [],
"exec-root": "",
"experimental": false,
"features": {},
"storage-driver": "",
"storage-opts": [],
"labels": [],
#docker主機的標籤,很實用的功能,例如定義:–label nodeName=host-121
"live-restore": true,
"log-driver": "",
"log-opts": {},
"mtu": 0,
"pidfile": "",
#Docker守護進程的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的模式,啓用後,可以看到很多的啓動信息。默認false
"hosts": [],
#設置容器hosts
"log-level": "",
"tls": true,
#默認 false, 啓動TLS認證開關
"tlscacert": "",
#默認 ~/.docker/ca.pem,通過CA認證過的的certificate文件路徑
"tlscert": "",
#默認 ~/.docker/cert.pem ,TLS的certificate文件路徑
"tlskey": "",
#默認~/.docker/key.pem,TLS的key文件路徑
"tlsverify": true,
#默認false,使用TLS並做後臺進程與客戶端通訊的驗證
"tls": true,
"tlsverify": true,
"tlscacert": "",
"tlscert": "",
"tlskey": "",
"swarm-default-advertise-addr": "",
"api-cors-header": "",
"selinux-enabled": false,
#默認 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,
#默認true, 啓用 net.ipv4.ip_forward ,進入容器後使用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的私庫地址
"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已在守護程序啓動時設置的選項設置爲標誌。在systemd用於啓動Docker守護程序的系統上-H已設置,因此您無法使用該hosts鍵daemon.json來添加偵聽地址。有關如何使用systemd drop-in文件完成此任務,請參閱https://docs.docker.com/engine/admin/systemd/#custom-docker-daemon-options。
修改配置文件之後需要重啓docker生效:systemctl restart docker.service