?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
Usage: dockerd COMMAND A self-sufficient runtime for containers. Options: --add-runtime runtime Register an additional OCI compatible runtime (default []) --allow-nondistributable-artifacts list Push nondistributable artifacts to specified registries (default []) --api-cors-header string Set CORS headers in the Engine API --authorization-plugin list Authorization plugins to load (default []) --bip string Specify network bridge IP -b, --bridge string Attach containers to a network bridge --cgroup-parent string Set parent cgroup for all containers --cluster-advertise string Address or interface name to advertise --cluster-store string URL of the distributed storage backend --cluster-store-opt map Set cluster store options (default map[]) --config-file string Daemon configuration file (default "/etc/docker/daemon.json") --containerd string Path to containerd socket --cpu-rt-period int Limit the CPU real-time period in microseconds --cpu-rt-runtime int Limit the CPU real-time runtime in microseconds --data-root string Root directory of persistent Docker state (default "/var/lib/docker") -D, --debug Enable debug mode --default-gateway ip Container default gateway IPv4 address --default-gateway-v6 ip Container default gateway IPv6 address --default-runtime string Default OCI runtime for containers (default "runc") --default-ulimit ulimit Default ulimits for containers (default []) --disable-legacy-registry Disable contacting legacy registries (default true) --dns list DNS server to use (default []) --dns-opt list DNS options to use (default []) --dns-search list DNS search domains to use (default []) --exec-opt list Runtime execution options (default []) --exec-root string Root directory for execution state files (default "/var/run/docker") --experimental Enable experimental features --fixed-cidr string IPv4 subnet for fixed IPs --fixed-cidr-v6 string IPv6 subnet for fixed IPs -G, --group string Group for the unix socket (default "docker") --help Print usage -H, --host list Daemon socket(s) to connect to (default []) --icc Enable inter-container communication (default true) --init Run an init in the container to forward signals and reap processes --init-path string Path to the docker-init binary --insecure-registry list Enable insecure registry communication (default []) --ip ip Default IP when binding container ports (default 0.0.0.0) --ip-forward Enable net.ipv4.ip_forward (default true) --ip-masq Enable IP masquerading (default true) --iptables Enable addition of iptables rules (default true) --ipv6 Enable IPv6 networking --label list Set key=value labels to the daemon (default []) --live-restore Enable live restore of docker when containers are still running --log-driver string Default driver for container logs (default "json-file") -l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info") --log-opt map Default log driver options for containers (default map[]) --max-concurrent-downloads int Set the max concurrent downloads for each pull (default 3) --max-concurrent-uploads int Set the max concurrent uploads for each push (default 5) --metrics-addr string Set default address and port to serve the metrics api on --mtu int Set the containers network MTU --no-new-privileges Set no-new-privileges by default for new containers --oom-score-adjust int Set the oom_score_adj for the daemon (default -500) -p, --pidfile string Path to use for daemon PID file (default "/var/run/docker.pid") --raw-logs Full timestamps without ANSI coloring --registry-mirror list Preferred Docker registry mirror (default []) --seccomp-profile string Path to seccomp profile --selinux-enabled Enable selinux support --shutdown-timeout int Set the default shutdown timeout (default 15) -s, --storage-driver string Storage driver to use --storage-opt list Storage driver options (default []) --swarm-default-advertise-addr string Set default address or interface for swarm advertised address --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "~/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "~/.docker/cert.pem") --tlskey string Path to TLS key file (default ~/.docker/key.pem") --tlsverify Use TLS and verify the remote --userland-proxy Use userland proxy for loopback traffic (default true) --userland-proxy-path string Path to the userland proxy binary --userns-remap string User/Group setting for user namespaces -v, --version Print version information and quit
帶有[]的選項(xiàng)可以指定多次。
dockerd
是管理容器的持續(xù)過程。Docker為守護(hù)進(jìn)程和客戶端使用不同的二進(jìn)制文件。運(yùn)行你輸入的守護(hù)進(jìn)程dockerd
。
要使用調(diào)試輸出運(yùn)行守護(hù)程序,請(qǐng)使用dockerd -D
或添加debug: true
到該daemon.json
文件。
注:在Docker1.13或更高版本,通過啟動(dòng)使實(shí)驗(yàn)性的功能
dockerd
與--experimental
標(biāo)志或添加experimental: true
到daemon.json
文件。在較早的Docker版本中,需要不同的版本來啟用實(shí)驗(yàn)功能。
Docker daemon可以監(jiān)聽通過三種不同類型的Socket引擎API請(qǐng)求:unix
,tcp
,和fd
。
默認(rèn)情況下,創(chuàng)建unix
域套接字(或IPC套接字)/var/run/docker.sock
,需要root
權(quán)限或docker
組成員資格。
如果您需要遠(yuǎn)程訪問Docker守護(hù)程序,則需要啟用tcp
套接字。請(qǐng)注意,默認(rèn)設(shè)置提供對(duì)Docker守護(hù)進(jìn)程的未加密和未經(jīng)身份驗(yàn)證的直接訪問 - 應(yīng)使用內(nèi)置的HTTPS加密套接字或?qū)踩玏eb代理放在其前面進(jìn)行保護(hù)。您可以使用IP地址在具有特定網(wǎng)絡(luò)接口的2375
所有網(wǎng)絡(luò)接口上偵聽端口-H tcp://0.0.0.0:2375
:-H tcp://192.168.59.103:2375
。通常使用端口2375
進(jìn)行未加密,并使用端口2376
與守護(hù)進(jìn)程進(jìn)行加密通信。
注:如果使用HTTPS加密套接字,請(qǐng)記住只支持TLS1.0及更高版本。出于安全考慮,不再支持SSLv 3及以下協(xié)議。
基于Systemd系統(tǒng)中,可以通過后臺(tái)程序溝通Systemd插座激活,使用dockerd -H fd://
。使用fd://
對(duì)于大多數(shù)設(shè)置來說都是完美的,但你也可以指定單獨(dú)的套接字:dockerd -H fd://3
。如果找不到指定的套接字激活文件,則Docker將退出。您可以在Docker源代碼樹中找到在Docker和Systemd中使用Systemd套接字激活的示例。
可以將Docker守護(hù)進(jìn)程配置為同時(shí)使用多個(gè)套接字偵聽多個(gè)套接字。-H
備選方案:
# listen using the default unix socket, and on 2 specific IP addresses on this host.$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2
Docker客戶端將遵守DOCKER_HOST
環(huán)境變量來設(shè)置-H
客戶端的標(biāo)志。使用一個(gè)下面的命令:
$ docker -H tcp://0.0.0.0:2375 ps
$ export DOCKER_HOST="tcp://0.0.0.0:2375"$ docker ps
將DOCKER_TLS_VERIFY
環(huán)境變量設(shè)置為除空字符串以外的任何值都等同于設(shè)置--tlsverify
標(biāo)志。以下是等同的:
$ docker --tlsverify ps # or $ export DOCKER_TLS_VERIFY=1$ docker ps
泊塢窗客戶端將信守HTTP_PROXY
,HTTPS_PROXY
以及NO_PROXY
環(huán)境變量(或小寫的版本上)。HTTPS_PROXY
優(yōu)先于HTTP_PROXY
。
警告*更改默認(rèn)值
docker
守護(hù)進(jìn)程綁定到TCP端口或Unix碼頭工人用戶組將通過允許非根用戶獲取信息來增加您的安全風(fēng)險(xiǎn)。根部進(jìn)入主機(jī)。確保您控制對(duì)docker
如果您正在綁定到TCP端口,任何訪問該端口的人都可以完全訪問該端口;因此,在開放的網(wǎng)絡(luò)中不宜使用該端口。
帶著-H
可以讓Docker守護(hù)進(jìn)程偵聽特定的IP和端口。默認(rèn)情況下,它將監(jiān)聽unix:///var/run/docker.sock
類只允許本地連接。根部用戶。你能把它設(shè)置為0.0.0.0:2375
或者一個(gè)特定的主機(jī)ip讓每個(gè)人都可以訪問,但這是不建議因?yàn)閷?duì)某個(gè)人來說,獲得對(duì)運(yùn)行守護(hù)進(jìn)程的主機(jī)的根訪問非常簡單。
同樣,Docker客戶端可以使用-H
連接到自定義端口。Docker客戶端將默認(rèn)連接到unix:///var/run/docker.sock
Linux和tcp://127.0.0.1:2376
Windows。
-H
接受以下格式的主機(jī)和端口分配:
tcp://[host]:[port][path] or unix://path
例如:
tcp://
- > TLS加密打開時(shí)TCP 127.0.0.1
端口連接到任一端口2376
,或者2375
當(dāng)通信采用純文本時(shí)連接到端口。
tcp://host:2375
->主機(jī)上的TCP連接:2375
tcp://host:2375/path
->主機(jī)上的tcp連接:2375和所有請(qǐng)求的前置路徑
unix://path/to/socket
->Unix套接字位于path/to/socket
-H
為空時(shí),將默認(rèn)為與未-H
傳入時(shí)相同的值。
-H
還接受TCP綁定的簡短形式:host:
或host:port
或:port
在守護(hù)進(jìn)程模式下運(yùn)行Docker:
$ sudo <path to>/dockerd -H 0.0.0.0:5555 &
下載ubuntu
圖片:
$ docker -H :5555 pull ubuntu
您可以使用多個(gè)-H
,例如,如果您希望同時(shí)偵聽tcp和unix套接字。
# Run docker in daemon mode $ sudo <path to>/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock &# Download an ubuntu image, use default Unix socket $ docker pull ubuntu # OR use the TCP port $ docker -H tcp://127.0.0.1:2375 pull ubuntu
Docker daemon 進(jìn)程有幾種不同的圖像層存儲(chǔ)驅(qū)動(dòng)程序支持:aufs
,devicemapper
,btrfs
,zfs
,overlay
和overlay2
。
aufs
驅(qū)動(dòng)器是最古老的,而是基于Linux內(nèi)核補(bǔ)丁集是不太可能被合并到主內(nèi)核中。這些也會(huì)導(dǎo)致一些嚴(yán)重的內(nèi)核崩潰。但是,aufs
允許容器共享可執(zhí)行文件和共享庫內(nèi)存,因此在使用相同的一個(gè)或多個(gè)程序庫運(yùn)行數(shù)千個(gè)容器時(shí)是非常有用的選擇。
devicemapper
驅(qū)動(dòng)程序使用精簡配置和寫入時(shí)復(fù)制(CoW)快照。對(duì)于每個(gè)設(shè)備映射圖位置(通常情況下)/var/lib/docker/devicemapper
,將根據(jù)兩個(gè)塊設(shè)備創(chuàng)建精簡池,其中一個(gè)用于數(shù)據(jù),另一個(gè)用于元數(shù)據(jù)。默認(rèn)情況下,這些塊設(shè)備是通過使用自動(dòng)創(chuàng)建的稀疏文件的回送裝載自動(dòng)創(chuàng)建的。有關(guān)如何自定義此設(shè)置的方法,請(qǐng)參閱下面的存儲(chǔ)驅(qū)動(dòng)程序選項(xiàng)。?jpetazzo /使用Device Mapper插件文章調(diào)整Docker容器解釋了如何在不使用選項(xiàng)的情況下調(diào)整現(xiàn)有設(shè)置。
btrfs
驅(qū)動(dòng)程序的速度非???,就像docker build
- 但不像devicemapper
設(shè)備之間共享可執(zhí)行內(nèi)存。使用dockerd -s btrfs -g /mnt/btrfs_partition
。
zfs
驅(qū)動(dòng)可能不如btrfs
但對(duì)穩(wěn)定較長的記錄。由于Single Copy ARC
克隆之間的共享塊只會(huì)被緩存一次。使用dockerd -s zfs
。zfs.fsname
按照存儲(chǔ)驅(qū)動(dòng)程序選項(xiàng)中的說明選擇不同的zfs文件系統(tǒng)集選項(xiàng)。
overlay
是一個(gè)非??焖俚穆?lián)合文件系統(tǒng)?,F(xiàn)在它在3.18.0版本的主要Linux內(nèi)核中合并。overlay
也支持頁面緩存共享,這意味著訪問同一文件的多個(gè)容器可以共享一個(gè)頁面緩存條目(或條目),它使overlay
內(nèi)存與aufs
驅(qū)動(dòng)程序一樣高效。呼叫dockerd -s overlay
使用它。
注意:
overlay:
盡管如此,該功能仍然非常年輕,不應(yīng)在生產(chǎn)中使用。最值得注意的是,使用overlay
會(huì)導(dǎo)致過多的inode消耗(特別是隨著圖像數(shù)量的增長),以及>與使用RPM不兼容。
overlay2
使用相同的快速工會(huì)的文件系統(tǒng),但采用的利用附加功能在Linux內(nèi)核4.0添加,以避免過多的inode消耗。調(diào)用dockerd -s overlay2
使用它。
注:這兩個(gè)
overlay
和overlay2
是目前不支持上btrfs
或?qū)懳募到y(tǒng)的任何副本,只應(yīng)在使用ext4
分區(qū)。
特定的存儲(chǔ)驅(qū)動(dòng)程序可以使用--storage-opt
標(biāo)志指定的選項(xiàng)進(jìn)行配置。選項(xiàng)為devicemapper
前綴dm
,zfs
開始zfs
選項(xiàng)和btrfs
開始選項(xiàng)btrfs
。
這是Linux上devicemapper配置文件的一個(gè)示例:
{ "storage-driver": "devicemapper", "storage-opts": [ "dm.thinpooldev=/dev/mapper/thin-pool", "dm.use_deferred_deletion=true", "dm.use_deferred_removal=true" ]}
dm.thinpooldev
指定用于精簡池的自定義塊存儲(chǔ)設(shè)備。
如果使用塊設(shè)備進(jìn)行設(shè)備映射程序存儲(chǔ),則最好使用它lvm
來創(chuàng)建和管理精簡池卷。然后將該卷交給Docker專門創(chuàng)建映像和容器所需的快照卷。
在Engine外部管理精簡池使得Docker利用設(shè)備映射精簡配置作為Docker容器的后備存儲(chǔ),這是功能最豐富的方法。基于lvm的精簡池管理功能的亮點(diǎn)包括:自動(dòng)或交互式精簡池調(diào)整大小支持,動(dòng)態(tài)更改精簡池功能,當(dāng)lvm激活精簡池時(shí)自動(dòng)精簡元數(shù)據(jù)檢查等。
作為未提供精簡池的后備,將創(chuàng)建回送文件。環(huán)回速度非常慢,但可以在沒有任何存儲(chǔ)預(yù)配置的情況下使用。強(qiáng)烈建議您不要在生產(chǎn)環(huán)境中使用環(huán)回。確保您的引擎守護(hù)程序提供了一個(gè)--storage-opt dm.thinpooldev
參數(shù)。
$ sudo dockerd --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
dm.directlvm_device
作為上述提供瘦池的替代方案,Docker可以為您設(shè)置一個(gè)塊設(shè)備。
$ sudo dockerd --storage-opt dm.directlvm_device=/dev/xvdf
dm.thinp_percent
設(shè)置要用于存儲(chǔ)的塊設(shè)備傳遞的百分比。
$ sudo dockerd --storage-opt dm.thinp_percent=95
dm.thinp_metapercent
設(shè)置要用于元數(shù)據(jù)存儲(chǔ)的傳入塊設(shè)備的百分比。
$ sudo dockerd --storage-opt dm.thinp_metapercent=1
dm.thinp_autoextend_threshold
在lvm
嘗試自動(dòng)擴(kuò)展可用空間100 =禁用之前,設(shè)置所用空間百分比的值
$ sudo dockerd --storage-opt dm.thinp_autoextend_threshold=80
dm.thinp_autoextend_percent
設(shè)置值百分比值,以在lvm
嘗試自動(dòng)擴(kuò)展可用空間100 =禁用時(shí)增加精簡池
$ sudo dockerd --storage-opt dm.thinp_autoextend_percent=20
dm.basesize
指定創(chuàng)建基礎(chǔ)設(shè)備時(shí)使用的大小,這限制了圖像和容器的大小。默認(rèn)值是10G。請(qǐng)注意,精簡設(shè)備本質(zhì)上是“稀疏”的,因此大多數(shù)情況下為空的10G設(shè)備不會(huì)在池中使用10 GB的空間。但是,文件系統(tǒng)將為設(shè)備越大的空箱使用更多空間。
在守護(hù)進(jìn)程重新啟動(dòng)時(shí)可以增加基本設(shè)備的大小,這將允許所有將來的映像和容器(基于這些新映像)成為新的基本設(shè)備大小。
$ sudo dockerd --storage-opt dm.basesize=50G
這會(huì)將基本設(shè)備大小增加到50G。如果現(xiàn)有的基礎(chǔ)設(shè)備大小大于50G,則Docker守護(hù)程序?qū)⒁l(fā)錯(cuò)誤。用戶可以使用此選項(xiàng)擴(kuò)展基本設(shè)備尺寸,但不允許收縮。
此值影響系統(tǒng)范圍內(nèi)的“基本”空文件系統(tǒng),該文件系統(tǒng)可能已經(jīng)被拉出的圖像初始化和繼承。通常,對(duì)此值的更改需要其他步驟才能生效:
$ sudo service docker stop $ sudo rm -rf /var/lib/docker $ sudo service docker start
dm.loopdatasize
注此選項(xiàng)配置devicemapper回送,不應(yīng)在生產(chǎn)中使用。
指定為用于瘦池的“數(shù)據(jù)”設(shè)備創(chuàng)建回送文件時(shí)使用的大小。默認(rèn)大小為100 G。這個(gè)文件很稀疏,所以它最初不會(huì)占用這么多空間。
$ sudo dockerd --storage-opt dm.loopdatasize=200G
dm.loopmetadatasize
注此選項(xiàng)配置devicemapper回送,不應(yīng)在生產(chǎn)中使用。
指定為用于瘦池的“元數(shù)據(jù)”設(shè)備創(chuàng)建回送文件時(shí)使用的大小。默認(rèn)大小是2G。這個(gè)文件很稀疏,所以它最初不會(huì)占用這么多空間。
$ sudo dockerd --storage-opt dm.loopmetadatasize=4G
dm.fs
指定要用于基礎(chǔ)設(shè)備的文件系統(tǒng)類型。支持的選項(xiàng)是“ext4”和“xfs”。默認(rèn)是“xfs”
$ sudo dockerd --storage-opt dm.fs=ext4
dm.mkfsarg
指定在創(chuàng)建基本設(shè)備時(shí)要使用的額外mkfs參數(shù)。
$ sudo dockerd --storage-opt "dm.mkfsarg=-O ^has_journal"
dm.mountopt
指定安裝瘦設(shè)備時(shí)使用的額外安裝選項(xiàng)。
$ sudo dockerd --storage-opt dm.mountopt=nodiscard
dm.datadev
(已棄用,使用dm.thinpooldev
)
指定用于瘦池?cái)?shù)據(jù)的自定義塊設(shè)備。
如果使用塊設(shè)備來存儲(chǔ)設(shè)備映射器,最好兩者都使用。datadev
和metadatadev
應(yīng)指定以完全避免使用回送設(shè)備。
$ sudo dockerd \ --storage-opt dm.datadev=/dev/sdb1 \ --storage-opt dm.metadatadev=/dev/sdc1
dm.metadatadev
(已棄用,使用dm.thinpooldev
)
指定用于瘦池元數(shù)據(jù)的自定義塊設(shè)備。
為了獲得最好的性能,元數(shù)據(jù)應(yīng)該位于與數(shù)據(jù)不同的紡錘體上,或者更好地放在SSD上。
如果設(shè)置了新的元數(shù)據(jù)池,則要求其有效。這可以通過對(duì)前4k進(jìn)行零化以指示空元數(shù)據(jù)來實(shí)現(xiàn),如下所示:
$ dd if=/dev/zero of=$metadata_dev bs=4096 count=1
$ sudo dockerd \ --storage-opt dm.datadev=/dev/sdb1 \ --storage-opt dm.metadatadev=/dev/sdc1
dm.blocksize
指定要用于瘦池的自定義塊大小。默認(rèn)的塊大小是64K。
$ sudo dockerd --storage-opt dm.blocksize=512K
dm.blkdiscard
啟用或禁用blkdiscard
移除devicemapper設(shè)備時(shí)的使用。如果使用回送設(shè)備,則默認(rèn)情況下啟用此功能,并且需要在移除圖像/容器時(shí)重新分組環(huán)回文件。
在回送時(shí)禁用此選項(xiàng)會(huì)導(dǎo)致多更快的集裝箱移除時(shí)間,但將使空間使用/var/lib/docker
當(dāng)容器被移除時(shí),目錄不會(huì)返回給系統(tǒng)以供其他使用。
$ sudo dockerd --storage-opt dm.blkdiscard=false
dm.override_udev_sync_check
覆蓋devicemapperudevudev
和udev
之間的同步檢查。是Linux內(nèi)核的設(shè)備管理器。
要查看udev
使用該devicemapper
驅(qū)動(dòng)程序的Docker守護(hù)進(jìn)程的同步支持,請(qǐng)運(yùn)行:
$ docker info[...]Udev Sync Supported: true[...]
當(dāng)udev
同步支持是true
,則devicemapper
和的udev可以協(xié)調(diào)用于容器的設(shè)備的激活和去激活。
當(dāng)udev
同步支持是false
,在之間出現(xiàn)爭用條件devicemapper
和udev
過程中創(chuàng)建和清理。競賽狀況導(dǎo)致錯(cuò)誤和失敗。(有關(guān)這些故障的信息,請(qǐng)參閱docker#4036)
要允許docker
守護(hù)進(jìn)程啟動(dòng),而不管udev
同步不受支持,請(qǐng)?jiān)O(shè)置dm.override_udev_sync_check
為true:
$ sudo dockerd --storage-opt dm.override_udev_sync_check=true
當(dāng)這個(gè)值是true
,devicemapper
繼續(xù),并簡單地警告你錯(cuò)誤正在發(fā)生。
注意:理想是追求一個(gè)
docker
支持同步的守護(hù)進(jìn)程和環(huán)境udev
。有關(guān)此主題的進(jìn)一步討論,請(qǐng)參見docker#4036。否則,請(qǐng)?jiān)O(shè)置此標(biāo)志以將現(xiàn)有的Docker守護(hù)程序遷移到具有受支持環(huán)境的守護(hù)程序。
dm.use_deferred_removal
啟用延遲設(shè)備刪除的使用,如果libdm
內(nèi)核驅(qū)動(dòng)程序支持該機(jī)制。
延遲設(shè)備刪除是指當(dāng)設(shè)備被移除/停用時(shí),如果設(shè)備處于繁忙狀態(tài),則在設(shè)備上調(diào)度延遲刪除。當(dāng)設(shè)備的最后一個(gè)用戶退出時(shí),設(shè)備會(huì)自動(dòng)離開。
例如,當(dāng)容器退出時(shí),其相關(guān)的瘦設(shè)備將被移除。如果該設(shè)備已泄漏到其他掛載命名空間中,無法刪除,則容器退出仍然成功,此選項(xiàng)將導(dǎo)致系統(tǒng)調(diào)度設(shè)備以延遲刪除。它不會(huì)在試圖刪除繁忙設(shè)備的循環(huán)中等待。
$ sudo dockerd --storage-opt dm.use_deferred_removal=true
dm.use_deferred_deletion
允許對(duì)瘦池設(shè)備使用延遲設(shè)備刪除。默認(rèn)情況下,瘦池設(shè)備刪除是同步的。在刪除容器之前,Docker守護(hù)進(jìn)程將刪除所有相關(guān)設(shè)備。如果存儲(chǔ)驅(qū)動(dòng)程序無法刪除設(shè)備,則容器刪除失敗,守護(hù)進(jìn)程返回。
Error deleting container: Error response from daemon: Cannot destroy container
若要避免此失敗,請(qǐng)?jiān)谑刈o(hù)進(jìn)程上啟用延遲設(shè)備刪除和延遲設(shè)備刪除。
$ sudo dockerd \ --storage-opt dm.use_deferred_deletion=true \ --storage-opt dm.use_deferred_removal=true
啟用這兩個(gè)選項(xiàng)后,如果設(shè)備在驅(qū)動(dòng)程序刪除容器時(shí)繁忙,則驅(qū)動(dòng)程序?qū)⒃O(shè)備標(biāo)記為“已刪除”。稍后,當(dāng)設(shè)備沒有使用時(shí),驅(qū)動(dòng)程序會(huì)刪除它。
通常,默認(rèn)情況下啟用此選項(xiàng)應(yīng)該是安全的。當(dāng)跨多個(gè)掛載命名空間無意中發(fā)生掛載點(diǎn)泄漏時(shí),它將有所幫助。
dm.min_free_space
指定精簡池中的最小可用空間百分比,以便新設(shè)備創(chuàng)建成功。此檢查適用于免費(fèi)數(shù)據(jù)空間以及免費(fèi)元數(shù)據(jù)空間。有效值為0% - 99%。值0%禁用自由空間檢查邏輯。如果用戶未為此選項(xiàng)指定值,則引擎使用默認(rèn)值10%。
無論何時(shí)創(chuàng)建新的精簡池設(shè)備(在docker pull
容器創(chuàng)建期間或創(chuàng)建期間),引擎都會(huì)檢查最小可用空間是否可用。如果有足夠的空間不可用,則設(shè)備創(chuàng)建失敗,任何相關(guān)的docker
操作都將失敗。
若要從此錯(cuò)誤中恢復(fù),必須在瘦池中創(chuàng)建更多空閑空間以從錯(cuò)誤中恢復(fù)。您可以通過從瘦池中刪除一些圖像和容器來創(chuàng)建空閑空間。您還可以向瘦池添加更多的存儲(chǔ)空間。
要向LVM(邏輯卷管理)精簡池添加更多空間,只需將更多存儲(chǔ)添加到卷組容器精簡池; 這應(yīng)該會(huì)自動(dòng)解決任何錯(cuò)誤。如果您的配置使用循環(huán)設(shè)備,則停止引擎守護(hù)進(jìn)程,增大循環(huán)文件的大小并重新啟動(dòng)守護(hù)進(jìn)程以解決問題。
$ sudo dockerd --storage-opt dm.min_free_space=10%
dm.xfs_nospace_max_retries
指定當(dāng)?shù)讓哟鎯?chǔ)設(shè)備返回ENOSPC(無空間)錯(cuò)誤時(shí),XFS應(yīng)嘗試完成IO的最大重試次數(shù)。
默認(rèn)情況下,XFS會(huì)無限次地重試以完成IO,這可能會(huì)導(dǎo)致無法運(yùn)行的進(jìn)程。為了改變這種行為,可以將xfs_nospace_max_retries設(shè)置為0,并且XFS在獲得ENOSPC后不會(huì)重試IO,并關(guān)閉文件系統(tǒng)。
$ sudo dockerd --storage-opt dm.xfs_nospace_max_retries=0
zfs.fsname
設(shè)置zfs文件系統(tǒng),docker將在其中創(chuàng)建自己的數(shù)據(jù)集。默認(rèn)情況下,docker將選取docker graph(/var/lib/docker
)所在的zfs文件系統(tǒng)。
$ sudo dockerd -s zfs --storage-opt zfs.fsname=zroot/docker
btrfs.min_space
指定創(chuàng)建用于容器的子容量時(shí)使用的最小大小。如果用戶在使用-storage-opt size選項(xiàng)創(chuàng)建或運(yùn)行容器時(shí)使用btrfs的磁盤配額,則docker應(yīng)確保大小不能小于btrfs.min_space。
$ sudo dockerd -s btrfs --storage-opt btrfs.min_space=10G
overlay2.override_kernel_check
覆蓋允許overlay2的Linux內(nèi)核版本檢查。在4.0.0中,支持指定overlay2所需的多個(gè)低級(jí)目錄。但是,可能會(huì)修補(bǔ)一些較舊的內(nèi)核版本,以便為OverlayFS添加多個(gè)較低目錄支持。只有在驗(yàn)證內(nèi)核中存在此支持后才能使用此選項(xiàng)。在沒有此支持的情況下在內(nèi)核上應(yīng)用此選項(xiàng)會(huì)導(dǎo)致安裝失敗。
Docker daemon依賴于OCI兼容的運(yùn)行(通過調(diào)用containerd
后臺(tái)程序)作為其接口Linux內(nèi)核namespaces
,cgroups
以及SELinux
。
默認(rèn)情況下,Docker守護(hù)進(jìn)程會(huì)自動(dòng)啟動(dòng)containerd
。如果要控制containerd
啟動(dòng),請(qǐng)手動(dòng)啟動(dòng)containerd
并containerd
使用--containerd
標(biāo)志將路徑傳遞到套接字。例如:
$ sudo dockerd --containerd /var/run/dev/docker-containerd.sock
運(yùn)行時(shí)可以通過配置文件或使用--add-runtime
命令行參數(shù)
下面是一個(gè)通過配置添加2個(gè)運(yùn)行時(shí)的示例:
{"default-runtime": "runc","runtimes": {"runc": {"path": "runc"},"custom": {"path": "/usr/local/bin/my-runc-replacement","runtimeArgs": ["--debug"]}}}
這是通過命令行的相同示例:
$ sudo dockerd --add-runtime runc=runc --add-runtime custom=/usr/local/bin/my-runc-replacement
注意:不支持通過命令行定義運(yùn)行時(shí)參數(shù)。
您可以使用--exec-opt
標(biāo)志指定的選項(xiàng)來配置運(yùn)行時(shí)。所有標(biāo)志的選項(xiàng)都有native
前綴。有一個(gè)native.cgroupdriver
選項(xiàng)可用。
該native.cgroupdriver
選項(xiàng)指定容器的cgroup的管理。您只能指定cgroupfs
或systemd
。如果指定systemd
并且不可用,則系統(tǒng)出錯(cuò)。如果您省略該native.cgroupdriver
選項(xiàng),cgroupfs
則使用該選項(xiàng)。
此示例設(shè)置cgroupdriver
到systemd
*
$ sudo dockerd --exec-opt native.cgroupdriver=systemd
設(shè)置此選項(xiàng)適用于守護(hù)進(jìn)程啟動(dòng)的所有容器。
Windows容器也--exec-opt
用于特殊用途。Docker用戶可以指定默認(rèn)的容器隔離技術(shù),例如:
> dockerd --exec-opt isolation=hyperv
將hyperv
在Windows上制作默認(rèn)的隔離技術(shù)。如果在守護(hù)進(jìn)程啟動(dòng)時(shí)未指定隔離值,則在Windows客戶端上,默認(rèn)值為hyperv
,并且在Windows服務(wù)器上,默認(rèn)值為process
。
若要為所有Docker容器設(shè)置DNS服務(wù)器,請(qǐng)使用:
$ sudo dockerd --dns 8.8.8.8
若要為所有Docker容器設(shè)置DNS搜索域,請(qǐng)使用:
$ sudo dockerd --dns-search example.com
某些圖像(例如Windows基本圖像)包含分布受許可限制的工件。當(dāng)這些圖像被推送到注冊(cè)表時(shí),不包括受限的工件。
要覆蓋特定注冊(cè)表的此行為,請(qǐng)使用--allow-nondistributable-artifacts
以下形式之一的選項(xiàng):
--allow-nondistributable-artifacts myregistry:5000
告訴Docker守護(hù)進(jìn)程將不可分發(fā)的工件推到MyRegistry:5000。
--allow-nondistributable-artifacts 10.1.0.0/16
告訴Docker守護(hù)進(jìn)程將不可分發(fā)的工件推送到其解析IP地址位于CIDR語法描述的子網(wǎng)中的所有注冊(cè)中心。
此選項(xiàng)可多次使用。
此選項(xiàng)在將包含不可分發(fā)工件的圖像推送到空隙網(wǎng)絡(luò)上的注冊(cè)表時(shí)非常有用,這樣網(wǎng)絡(luò)上的主機(jī)就可以在不連接到另一臺(tái)服務(wù)器的情況下提取圖像。
警告:不可分發(fā)的工件通常對(duì)如何和在何處分發(fā)和共享它們有限制。只使用此特性將工件推到私有注冊(cè)中心,并確保您遵守任何涉及重新分發(fā)不可分發(fā)工件的術(shù)語。
Docker認(rèn)為私人注冊(cè)安全或不安全。在本節(jié)的其余部分中,注冊(cè)表用于私人注冊(cè)表,并且myregistry:5000
是私人注冊(cè)表的占位符示例。
安全注冊(cè)表使用TLS,并將其CA證書的副本放在Docker主機(jī)上/etc/docker/certs.d/myregistry:5000/ca.crt
。一個(gè)不安全的注冊(cè)表要么不使用TLS(即,使用純文本HTTP進(jìn)行監(jiān)聽),要么使用帶有Docker守護(hù)程序未知的CA證書的TLS。后者可能發(fā)生在未找到證書的情況下/etc/docker/certs.d/myregistry:5000/
,或證書驗(yàn)證失?。村e(cuò)誤的CA)。
默認(rèn)情況下,Docker假設(shè)所有,但本地(請(qǐng)參閱下面的本地注冊(cè)表),注冊(cè)表是安全的。如果Docker假定注冊(cè)表是安全的,則不可能與不安全的注冊(cè)表通信。為了與不安全的注冊(cè)表進(jìn)行通信,Docker守護(hù)進(jìn)程需要--insecure-registry
以下兩種形式之一:
--insecure-registry myregistry:5000
告訴Docker守護(hù)進(jìn)程,MyRegistry:5000應(yīng)該被認(rèn)為是不安全的。
--insecure-registry 10.1.0.0/16
告訴Docker守護(hù)進(jìn)程,其域解析為IP地址的所有注冊(cè)中心都屬于CIDR語法描述的子網(wǎng)的一部分,應(yīng)該被認(rèn)為是不安全的。
此標(biāo)志可多次使用,以允許將多個(gè)注冊(cè)中心標(biāo)記為不安全。
如果不安全的注冊(cè)表沒有被標(biāo)記為不安全的,docker pull
,docker push
,和docker search
將導(dǎo)致一個(gè)錯(cuò)誤消息,提示用戶或者安全或通過--insecure-registry
如上述那樣標(biāo)志提供給多克爾守護(hù)進(jìn)程。
本地注冊(cè)中心的IP地址在127.0.0.0/8范圍內(nèi),從Docker 1.3.2開始自動(dòng)標(biāo)記為不安全。不建議依賴這一點(diǎn),因?yàn)樗赡茉谖磥戆l(fā)生變化。
使能--insecure-registry
,即允許不加密和/或不可信的通信,在運(yùn)行本地注冊(cè)表時(shí)可能很有用。但是,由于它的使用會(huì)產(chǎn)生安全漏洞,因此只應(yīng)該為測(cè)試目的啟用它。為了提高安全性,用戶應(yīng)該將他們的CA添加到系統(tǒng)的可信CA列表中,而不是啟用--insecure-registry
...
針對(duì)僅支持傳統(tǒng)v1協(xié)議的注冊(cè)管理機(jī)構(gòu)的操作默認(rèn)處于禁用狀態(tài)。具體來說,守護(hù)進(jìn)程不會(huì)嘗試push
,pull
并login
以V1登記。此例外情況search
仍然可以在v1注冊(cè)表上執(zhí)行。
如果您需要與尚未遷移到v2協(xié)議的注冊(cè)表交互,請(qǐng)?zhí)砑?code>"disable-legacy-registry":false到守護(hù)程序配置文件或設(shè)置--disable-legacy-registry=false
標(biāo)志。
Docker v17.12不再支持交互v1注冊(cè)中心,disable-legacy-registry
配置選項(xiàng)將被刪除。
在使用HTTPS
代理,碼頭集線器證書將被代理的證書所取代。這些證書需要添加到Docker主機(jī)的配置中:
安裝ca-certificates
分發(fā)包
向您的網(wǎng)絡(luò)管理員詢問代理的CA證書,并將它們附加到/etc/pki/tls/certs/ca-bundle.crt
然后用HTTPS_PROXY=http://username:password@proxy:port/ dockerd
...username:
和password@
是可選的,并且只有當(dāng)您的代理被設(shè)置為需要身份驗(yàn)證時(shí)才需要。
這只會(huì)將代理和身份驗(yàn)證添加到Docker守護(hù)進(jìn)程的請(qǐng)求-docker build
和正在運(yùn)行的容器需要額外的配置才能使用代理。
ulimit
設(shè)置--default-ulimit
允許您設(shè)置ulimit
用于所有容器的默認(rèn)選項(xiàng)。它采用相同的選項(xiàng)--ulimit
進(jìn)行docker run
。如果未設(shè)置這些默認(rèn)值ulimit
,則將docker run
從Docker守護(hù)程序繼承設(shè)置(如果未設(shè)置)。--ulimit
傳遞給任何選項(xiàng)docker run
將覆蓋這些默認(rèn)值。
請(qǐng)小心使用ulimit標(biāo)志設(shè)置nproc,因?yàn)閚proc是由Linux設(shè)計(jì)的,用于設(shè)置用戶可用的最大進(jìn)程數(shù),而不是容器。 詳情請(qǐng)查看運(yùn)行參考。
--cluster-advertise
選項(xiàng)指定此特定守護(hù)程序?qū)嵗趯⒆陨韽V告到群集時(shí)應(yīng)使用的組合host:port
或interface:port
組合。守護(hù)進(jìn)程通過此值由遠(yuǎn)程主機(jī)訪問。如果您指定了一個(gè)接口,請(qǐng)確保它包含實(shí)際Docker主機(jī)的IP地址。對(duì)于通過創(chuàng)建的引擎安裝docker-machine
,界面通常是eth1
。
守護(hù)進(jìn)程使用libkv在集群內(nèi)通告節(jié)點(diǎn)。一些鍵值后端支持相互TLS。配置守護(hù)程序使用的客戶端TLS設(shè)置可以使用--cluster-store-opt
標(biāo)志進(jìn)行配置,指定PEM編碼文件的路徑。例如:
$ sudo dockerd \ --cluster-advertise 192.168.1.2:2376 \ --cluster-store etcd://192.168.1.2:2379 \ --cluster-store-opt kv.cacertfile=/path/to/ca.pem \ --cluster-store-opt kv.certfile=/path/to/cert.pem \ --cluster-store-opt kv.keyfile=/path/to/key.pem
當(dāng)前支持的群集存儲(chǔ)選項(xiàng)是:
選項(xiàng) | 描述 |
---|---|
discovery.heartbeat | 以秒為單位指定守護(hù)進(jìn)程使用的心跳定時(shí)器作為?;顧C(jī)制,以確保發(fā)現(xiàn)模塊將節(jié)點(diǎn)視為在群集中處于活動(dòng)狀態(tài)。如果未配置,則默認(rèn)值為20秒。 |
discovery.ttl | 如果在配置的ttl值內(nèi)未收到有效的心跳,則指定發(fā)現(xiàn)模塊用于超時(shí)節(jié)點(diǎn)的TTL(生存時(shí)間)(以秒為單位)。如果未配置,則默認(rèn)值為60秒。 |
kv.cacertfile | 指定包含PEM編碼CA證書的本地文件的路徑。 |
kv.certfile | 指定帶有PEM編碼證書的本地文件的路徑。該證書用作與密鑰/值存儲(chǔ)進(jìn)行通信的客戶證書。 |
kv.keyfile | 指定帶有PEM編碼私鑰的本地文件的路徑。該私鑰用作與密鑰/值存儲(chǔ)進(jìn)行通信的客戶端密鑰。 |
kv.path | 指定鍵/值存儲(chǔ)區(qū)中的路徑。如果未配置,則默認(rèn)值為'docker / nodes'。 |
Docker的訪問授權(quán)可以通過您的組織可以購買或構(gòu)建自己的授權(quán)插件進(jìn)行擴(kuò)展。daemon
使用該--authorization-plugin=PLUGIN_ID
選項(xiàng)啟動(dòng)Docker時(shí),您可以安裝一個(gè)或多個(gè)授權(quán)插件。
$ sudo dockerd --authorization-plugin=plugin1 --authorization-plugin=plugin2,...
PLUGIN_ID
值是插件的名稱或其規(guī)范文件的路徑。插件的實(shí)現(xiàn)確定您是否可以指定名稱或路徑。請(qǐng)咨詢您的Docker管理員以獲取有關(guān)可用插件的信息。
一旦安裝了插件,daemon
通過命令行或Docker的Engine API 發(fā)出的請(qǐng)求將被插件允許或拒絕。如果您安裝了多個(gè)插件,則每個(gè)插件都必須允許完成請(qǐng)求。
有關(guān)如何創(chuàng)建授權(quán)插件的信息,請(qǐng)參閱本文檔的Docker擴(kuò)展部分中的授權(quán)插件部分。
Linux內(nèi)核用戶名稱空間支持通過啟用進(jìn)程并因此使容器具有唯一范圍的用戶和組ID來提供額外的安全性,這些用戶和組ID是在主機(jī)系統(tǒng)使用的傳統(tǒng)用戶和組范圍之外??赡茏钪匾陌踩倪M(jìn)是,默認(rèn)情況下,作為root
用戶運(yùn)行的容器進(jìn)程在容器內(nèi)部具有預(yù)期的管理特權(quán)(有一些限制),但將有效地映射到uid
主機(jī)上的非特權(quán)。
有關(guān)如何使用此功能以及限制的詳細(xì)信息,請(qǐng)參閱使用用戶命名空間隔離容器。
IP偽裝使用地址轉(zhuǎn)換來允許沒有公共IP的容器與Internet上的其他計(jì)算機(jī)通話。這可能會(huì)干擾某些網(wǎng)絡(luò)拓?fù)洌?code>--ip-masq=false可能會(huì)被禁用。
Docker支持Docker數(shù)據(jù)目錄(/var/lib/docker
)和for的軟鏈接/var/lib/docker/tmp
。該DOCKER_TMPDIR
和數(shù)據(jù)目錄,可以這樣設(shè)置:
DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/dockerd -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1# orexport DOCKER_TMPDIR=/mnt/disk2/tmp/usr/local/bin/dockerd -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1
--cgroup-parent
選項(xiàng)允許您設(shè)置用于容器的默認(rèn)cgroup父項(xiàng)。如果未設(shè)置此選項(xiàng),則默認(rèn)/docker
為fs cgroup驅(qū)動(dòng)程序和system.slice
systemd cgroup驅(qū)動(dòng)程序。
如果cgroup具有前導(dǎo)正斜杠(/
),則cgroup將在根cgroup下創(chuàng)建,否則將在守護(hù)進(jìn)程cgroup下創(chuàng)建cgroup。
假設(shè)守護(hù)進(jìn)程在cgroup中運(yùn)行daemoncgroup
,--cgroup-parent=/foobar
創(chuàng)建一個(gè)cgroup /sys/fs/cgroup/memory/foobar
,而使用--cgroup-parent=foobar
創(chuàng)建cgroup/sys/fs/cgroup/memory/daemoncgroup/foobar
systemd cgroup驅(qū)動(dòng)程序具有不同的規(guī)則--cgroup-parent
。Systemd表示逐層分層,并且切片的名稱對(duì)樹中的位置進(jìn)行編碼。所以--cgroup-parent
對(duì)于systemd cgroups應(yīng)該是一個(gè)片名。一個(gè)名稱可以由一個(gè)破折號(hào)分隔的一系列名稱組成,它描述了從根片段開始切片的路徑。例如,--cgroup-parent=user-a-b.slice
表示容器的內(nèi)存cgroup被創(chuàng)建/sys/fs/cgroup/memory/user.slice/user-a.slice/user-a-b.slice/docker-<id>.scope
。
這個(gè)設(shè)置也可以每個(gè)集裝箱設(shè)置,使用--cgroup-parent
的選項(xiàng)docker create
和docker run
,并優(yōu)先于--cgroup-parent
對(duì)守護(hù)進(jìn)程選項(xiàng)。
--metrics-addr
選項(xiàng)采用tcp地址來為度量標(biāo)準(zhǔn)API提供服務(wù)。該功能仍然是實(shí)驗(yàn)性的,因此,守護(hù)程序必須以實(shí)驗(yàn)?zāi)J竭\(yùn)行才能使用此功能。
要在localhost:1337上提供指標(biāo)API,您需要指定--metrics-addr 127.0.0.1:1337
允許您在API上發(fā)出請(qǐng)求127.0.0.1:1337/metrics
以接收prometheus格式的指標(biāo)。
如果您運(yùn)行的是Prometheus服務(wù)器,則可以將此地址添加到您的scrape配置文件中,以便prometheus在Docker上收集指標(biāo)。有關(guān)prometheus的更多信息,您可以在這里查看網(wǎng)站。
scrape_configs: - job_name: 'docker' static_configs: - targets: ['127.0.0.1:1337']
請(qǐng)注意,此特性仍被標(biāo)記為實(shí)驗(yàn)性功能,因?yàn)槎攘亢投攘棵Q可能會(huì)更改,而此功能仍處于試驗(yàn)階段。請(qǐng)?zhí)峁┓答佉庖?,您希望看到收集的API。
該--config-file
選項(xiàng)允許您為JMS格式的守護(hù)程序設(shè)置任何配置選項(xiàng)。此文件使用相同的標(biāo)記名稱作為關(guān)鍵字,除了標(biāo)志,使幾個(gè)條目,它使用標(biāo)志名的復(fù)數(shù),例如,labels
對(duì)于label
標(biāo)志。
配置文件中設(shè)置的選項(xiàng)不能與通過標(biāo)志設(shè)置的選項(xiàng)沖突。如果一個(gè)選項(xiàng)在文件和標(biāo)志之間重復(fù),docker守護(hù)進(jìn)程無法啟動(dòng),無論它們的值如何。我們這樣做是為了避免默默地忽略配置重新加載中引入的更改。例如,如果在配置文件中設(shè)置了守護(hù)進(jìn)程標(biāo)簽,并且還通過--label
標(biāo)志設(shè)置了守護(hù)進(jìn)程標(biāo)簽,則守護(hù)進(jìn)程無法啟動(dòng)。當(dāng)守護(hù)程序啟動(dòng)時(shí),文件中不存在的選項(xiàng)將被忽略。
Linux上配置文件的默認(rèn)位置是/etc/docker/daemon.json
。該--config-file
標(biāo)志可用于指定非默認(rèn)位置。
這是Linux上允許的配置選項(xiàng)的完整示例:
{"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"]}}}
注意:您不能將
daemon.json
已在守護(hù)進(jìn)程啟動(dòng)時(shí)設(shè)置的選項(xiàng)設(shè)置為標(biāo)志。在systemd
用于啟動(dòng)Docker守護(hù)進(jìn)程的系統(tǒng)上,-H
已經(jīng)設(shè)置好了,因此您不能使用該hosts
鍵daemon.json
來添加監(jiān)聽地址。有關(guān)如何使用systemd插件文件完成此任務(wù),請(qǐng)參閱https://docs.docker.com/engine/admin/systemd/#custom-docker-daemon-options。
Windows上配置文件的默認(rèn)位置是%programdata%\docker\config\daemon.json
。該--config-file
標(biāo)志可用于指定非默認(rèn)位置。
這是Windows上允許的配置選項(xiàng)的完整示例:
{ "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}
守護(hù)進(jìn)程運(yùn)行時(shí)可以重新配置某些選項(xiàng),而無需重新啟動(dòng)進(jìn)程。我們使用SIGHUP
Linux中的信號(hào)重新加載,并在Windows中使用密鑰進(jìn)行全局事件Global\docker-daemon-config-$PID
。這些選項(xiàng)可以在配置文件中修改,但仍然會(huì)檢查與提供的標(biāo)志的沖突。如果存在沖突,守護(hù)進(jìn)程無法重新配置自身,但它不會(huì)停止執(zhí)行。
可以重新配置的當(dāng)前支持的選項(xiàng)列表如下:
debug
cluster-store
它用新地址重新加載發(fā)現(xiàn)商店。
cluster-store-opts
它使用新的選項(xiàng)重新加載發(fā)現(xiàn)存儲(chǔ)。
cluster-advertise
*它修改重新加載后公布的地址。
labels
它用一組新的標(biāo)簽替換守護(hù)進(jìn)程標(biāo)簽。
live-restore
*使在守護(hù)進(jìn)程停機(jī)期間保持容器活動(dòng)...
max-concurrent-downloads
:它更新每次拉的最大并發(fā)下載量。
max-concurrent-uploads
:它更新每次推送的最大并發(fā)上傳量。
default-runtime
::如果在容器創(chuàng)建時(shí)未指定,則更新要使用的運(yùn)行庫。它默認(rèn)為“默認(rèn)”,這是隨正式的??堪綆У倪\(yùn)行時(shí)。
runtimes
*它更新可用于運(yùn)行容器的可供OCI運(yùn)行時(shí)的列表。
authorization-plugin
指定要使用的授權(quán)插件。
allow-nondistributable-artifacts
::用一組新的注冊(cè)表替換守護(hù)進(jìn)程將不可分發(fā)的工件推送到的注冊(cè)表集。
insecure-registries
它用一組新的不安全注冊(cè)表替換守護(hù)進(jìn)程不安全的注冊(cè)中心。如果守護(hù)進(jìn)程配置中的某些現(xiàn)有不安全注冊(cè)中心不在新重新加載的不安全注冊(cè)表中,這些現(xiàn)有注冊(cè)表將從守護(hù)進(jìn)程的配置中刪除。
registry-mirrors
它用一組新的注冊(cè)表鏡像替換守護(hù)進(jìn)程注冊(cè)表鏡像。如果守護(hù)進(jìn)程配置中的某些現(xiàn)有注冊(cè)表鏡像不在新重新加載的注冊(cè)表鏡像中,這些現(xiàn)有注冊(cè)表鏡像將從守護(hù)進(jìn)程的配置中刪除。
更新和重新加載群集配置(例如--cluster-store
,--cluster-advertise
并且--cluster-store-opts
僅在以前未配置這些配置時(shí)才會(huì)生效。如果--cluster-store
已經(jīng)在標(biāo)志中提供而cluster-advertise
不是,cluster-advertise
可以在配置文件中添加,而不需要伴隨--cluster-store
。如果配置重新加載檢測(cè)到以前配置的群集配置中的更改,則會(huì)記錄警告消息。
注:在單個(gè)主機(jī)上運(yùn)行多個(gè)守護(hù)進(jìn)程被視為“實(shí)驗(yàn)性”。用戶應(yīng)該意識(shí)到尚未解決的問題。在某些情況下,此解決方案可能無法正常工作。目前正在制定解決辦法,并將在不久的將來交付。
本節(jié)介紹如何在單個(gè)主機(jī)上運(yùn)行多個(gè)Docker守護(hù)進(jìn)程。要運(yùn)行多個(gè)守護(hù)進(jìn)程,您必須配置每個(gè)守護(hù)進(jìn)程,以便它不會(huì)與同一主機(jī)上的其他守護(hù)進(jìn)程發(fā)生沖突。您可以通過將這些選項(xiàng)設(shè)置為標(biāo)志或使用守護(hù)程序配置文件來設(shè)置這些選項(xiàng)。
必須為每個(gè)守護(hù)進(jìn)程配置以下守護(hù)進(jìn)程選項(xiàng):
-b, --bridge= Attach containers to a network bridge--exec-root=/var/run/docker Root of the Docker execdriver--data-root=/var/lib/docker Root of persisted Docker data-p, --pidfile=/var/run/docker.pid Path to use for daemon PID file-H, --host=[] Daemon socket(s) to connect to--iptables=true Enable addition of iptables rules--config-file=/etc/docker/daemon.json Daemon configuration file--tlscacert="~/.docker/ca.pem" Trust certs signed only by this CA--tlscert="~/.docker/cert.pem" Path to TLS certificate file--tlskey="~/.docker/key.pem" Path to TLS key file
當(dāng)守護(hù)進(jìn)程為這些標(biāo)志使用不同的值時(shí),您可以在同一主機(jī)上運(yùn)行它們而不會(huì)有任何問題。正確理解這些選項(xiàng)的含義并正確使用它們是非常重要的。
--b, --bridge=
標(biāo)志被設(shè)置docker0
為默認(rèn)網(wǎng)橋。它在安裝Docker時(shí)自動(dòng)創(chuàng)建。如果您未使用默認(rèn)設(shè)置,則必須手動(dòng)創(chuàng)建和配置網(wǎng)橋,或?qū)⑵湓O(shè)置為“無”:--bridge=none
--exec-root
存儲(chǔ)容器狀態(tài)的路徑。默認(rèn)值是/var/run/docker
。在這里指定運(yùn)行守護(hù)進(jìn)程的路徑。
--data-root
是存儲(chǔ)持久數(shù)據(jù)(如圖像,卷和群集狀態(tài))的路徑。默認(rèn)值是/var/lib/docker
。為避免與其他守護(hù)進(jìn)程發(fā)生沖突,請(qǐng)為每個(gè)守護(hù)進(jìn)程單獨(dú)設(shè)置此參數(shù)。
-p, --pidfile=/var/run/docker.pid
是守護(hù)進(jìn)程的進(jìn)程ID存儲(chǔ)的路徑。在此指定您的pid文件的路徑。
--host=[]
指定Docker守護(hù)進(jìn)程將偵聽客戶端連接的位置。如果未指定,則默認(rèn)為/var/run/docker.sock
。
--iptables=false
阻止Docker守護(hù)進(jìn)程添加iptables規(guī)則。如果多個(gè)守護(hù)進(jìn)程管理iptables規(guī)則,他們可能會(huì)覆蓋另一個(gè)守護(hù)進(jìn)程設(shè)置的規(guī)則。請(qǐng)注意,禁用此選項(xiàng)需要您手動(dòng)添加iptables規(guī)則以顯示容器端口。如果您阻止Docker添加iptables規(guī)則,則即使您設(shè)置--ip-masq
為,Docker也不會(huì)添加IP偽裝規(guī)則true
。如果沒有IP偽裝規(guī)則,在使用非默認(rèn)網(wǎng)橋的網(wǎng)絡(luò)時(shí),Docker容器將無法連接到外部主機(jī)或互聯(lián)網(wǎng)。
--config-file=/etc/docker/daemon.json
存儲(chǔ)配置文件的路徑。您可以使用它而不是守護(hù)進(jìn)程標(biāo)志。為每個(gè)守護(hù)進(jìn)程指定路徑。
--tls*
Docker守護(hù)進(jìn)程支持--tlsverify
強(qiáng)制加密和認(rèn)證遠(yuǎn)程連接的模式。這些--tls*
選項(xiàng)可以為特定的守護(hù)程序使用特定的證書。
沒有網(wǎng)絡(luò)的Docker守護(hù)程序的單獨(dú)“引導(dǎo)”實(shí)例的示例腳本:
$ sudo dockerd \ -H unix:///var/run/docker-bootstrap.sock \ -p /var/run/docker-bootstrap.pid \ --iptables=false \ --ip-masq=false \ --bridge=none \ --data-root=/var/lib/docker-bootstrap \ --exec-root=/var/run/docker-bootstrap