码头工人
守护程序
Usage: dockerd COMMAND
A self-sufficient runtime for containers.
Options:
--add-runtime runtime Register an additional OCI compatible runtime (default [])
--allow-nondistributable-artifacts list Allow push of nondistributable artifacts to registry
--api-cors-header string Set CORS headers in the Engine API
--authorization-plugin list Authorization plugins to load
--bip string Specify network bridge IP
-b, --bridge string Attach containers to a network bridge
--cgroup-parent string Set parent cgroup for all containers
--config-file string Daemon configuration file (default "/etc/docker/daemon.json")
--containerd string containerd grpc address
--containerd-namespace string Containerd namespace to use (default "moby")
--containerd-plugins-namespace string Containerd namespace to use for plugins (default "plugins.moby")
--cpu-rt-period int Limit the CPU real-time period in microseconds for the
parent cgroup for all containers
--cpu-rt-runtime int Limit the CPU real-time runtime in microseconds for the
parent cgroup for all containers
--cri-containerd start containerd with cri
--data-root string Root directory of persistent Docker state (default "/var/lib/docker")
-D, --debug Enable debug mode
--default-address-pool pool-options Default address pools for node specific local networks
--default-cgroupns-mode string Default mode for containers cgroup namespace ("host" | "private") (default "host")
--default-gateway ip Container default gateway IPv4 address
--default-gateway-v6 ip Container default gateway IPv6 address
--default-ipc-mode string Default mode for containers ipc ("shareable" | "private") (default "private")
--default-runtime string Default OCI runtime for containers (default "runc")
--default-shm-size bytes Default shm size for containers (default 64MiB)
--default-ulimit ulimit Default ulimits for containers (default [])
--dns list DNS server to use
--dns-opt list DNS options to use
--dns-search list DNS search domains to use
--exec-opt list Runtime execution options
--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
--host-gateway-ip ip IP address that the special 'host-gateway' string in --add-host resolves to.
Defaults to the IP address of the default bridge
--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
--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)
--ip6tables Enable addition of ip6tables rules (default false)
--ipv6 Enable IPv6 networking
--label list Set key=value labels to the daemon
--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)
--max-download-attempts int Set the max download attempts for each pull (default 5)
--metrics-addr string Set default address and port to serve the metrics api on
--mtu int Set the containers network MTU
--network-control-plane-mtu int Network Control plane MTU (default 1500)
--no-new-privileges Set no-new-privileges by default for new containers
--node-generic-resource list Advertise user-defined resource
--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
--rootless Enable rootless mode; typically used with RootlessKit
--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
--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
带有[]的选项可以多次指定。
描述
dockerd
是管理容器的持久性过程。Docker为守护程序和客户端使用不同的二进制文件。要运行守护程序,请键入dockerd
。
要使用调试输出运行守护程序,请使用dockerd -D
或添加"debug": true
到daemon.json
文件中。
启用实验功能
通过启动启用实验性功能
dockerd
与--experimental
标志或添加"experimental": true
到daemon.json
文件。
环境变量
为了便于参考,dockerd
命令行支持以下环境变量列表:
DOCKER_DRIVER
要使用的图形驱动程序。DOCKER_NOWARN_KERNEL_VERSION
防止警告您的Linux内核不适合Docker。DOCKER_RAMDISK
如果设置,将禁用“ pivot_root”。DOCKER_TMPDIR
临时Docker文件的位置。MOBY_DISABLE_PIGZ
unpigz
拉取图像时,即使已安装,也不要用于并行解压缩图层。
例子
守护程序套接字选项
泊坞窗守护程序可以监听泊坞引擎API
通过三种不同类型的Socket请求:unix
,tcp
,和fd
。
默认情况下,unix
在处创建域套接字(或IPC套接字)
/var/run/docker.sock
,需要root
权限或docker
组成员身份。
如果需要远程访问Docker守护程序,则需要启用tcp
Socket。请注意,默认设置可提供对Docker守护程序的未加密和未经身份验证的直接访问-应该使用内置的HTTPS加密套接字或通过在其前面放置安全的Web代理来保护其安全。您可以使用侦听2375
所有网络接口上的端口,也可以-H tcp://0.0.0.0:2375
使用其IP地址侦听特定网络接口上的端口:-H tcp://192.168.59.103:2375
。通常使用port2375
进行未加密,使用port进行2376
与守护程序的加密通信。
笔记
如果您使用的是HTTPS加密套接字,请记住仅支持TLS1.0和更高版本。出于安全原因,不再支持SSLv3及以下协议。
在基于Systemd的系统上,您可以通过Systemd套接字激活use与守护程序进行通信
dockerd -H fd://
。使用fd://
对于大多数设置来说都可以完美地工作,但是您也可以指定单个套接字:dockerd -H fd://3
。如果找不到指定的套接字激活文件,则Docker将退出。您可以在Docker源代码树中找到将Systemd套接字激活与Docker和Systemd一起使用的示例
。
您可以使用多个-H
选项将Docker守护程序配置为同时侦听多个套接字:
# 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
环境变量-H
为客户端设置
标志。使用一个下面的命令:
$ docker -H tcp://0.0.0.0:2375 ps
$ export DOCKER_HOST="tcp://0.0.0.0:2375"
$ docker ps
将DOCKER_TLS_VERIFY
环境变量设置为空字符串以外的任何值都等同于设置--tlsverify
标志。以下是等效的:
$ docker --tlsverify ps
# or
$ export DOCKER_TLS_VERIFY=1
$ docker ps
Docker客户端将使用HTTP_PROXY
,HTTPS_PROXY
和NO_PROXY
环境变量(或其小写版本)。HTTPS_PROXY
优先于HTTP_PROXY
。
Docker客户端支持通过SSH连接到远程守护程序:
$ docker -H ssh://me@example.com:22 ps
$ docker -H ssh://me@example.com ps
$ docker -H ssh://example.com ps
要使用SSH连接,您需要进行设置,ssh
以便它可以通过公共密钥身份验证到达远程主机。不支持密码验证。如果您的密钥受密码保护,则需要设置
ssh-agent
。
将Docker绑定到另一个主机/端口或Unix套接字
警告
将默认
docker
守护程序绑定更改为TCP端口或Unix docker用户组将通过允许非root用户获得主机上的root访问权限来增加安全风险。确保控制对的访问docker
。如果您绑定到TCP端口,则有权访问该端口的任何人都具有完全的Docker访问权限。因此建议不要在开放式网络上使用。
有了-H
它,可以使泊坞窗守护进程在一个特定的IP和端口监听。默认情况下,它将侦听
unix:///var/run/docker.sock
以仅允许root用户进行本地连接
。您可以将其设置为0.0.0.0:2375
或特定的主机IP来授予所有人访问权限,但是不建议这样做,因为这样对于某人获得对运行守护程序的主机的root访问权限是微不足道的。
同样,Docker客户端可用于-H
连接到自定义端口。Docker客户端将默认连接到unix:///var/run/docker.sock
Linux和tcp://127.0.0.1:2376
Windows。
-H
接受以下格式的主机和端口分配:
tcp://[host]:[port][path] or unix://path
例如:
tcp://
->127.0.0.1
启用2376
TLS加密时,TCP连接到任一端口,或者2375
以纯文本方式时,端口与TCP连接。tcp://host:2375
->主机上的TCP连接:2375tcp://host:2375/path
->主机:2375上的TCP连接,并在所有请求之前添加路径unix://path/to/socket
-> Unix套接字位于path/to/socket
-H
,如果为空,则默认为与-H
传入no时相同的值。
-H
还接受TCP绑定的缩写形式:host:
或host:port
或:port
在守护程序模式下运行Docker:
$ sudo <path to>/dockerd -H 0.0.0.0:5555 &
下载ubuntu
图片:
$ docker -H :5555 pull ubuntu
-H
例如,如果您想同时监听TCP和Unix套接字,则可以使用multiple 。
# 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
守护程序存储驱动程序
在Linux上,码头工人守护进程有几种不同的图像层存储驱动程序支持:aufs
,devicemapper
,btrfs
,zfs
,overlay
,overlay2
,和fuse-overlayfs
。
该aufs
驱动程序是最旧的,但基于Linux内核补丁集,该补丁集不太可能合并到主内核中。还已知这些会导致严重的内核崩溃。但是,aufs
允许容器共享可执行文件和共享库的内存,因此在使用相同程序或库运行数千个容器时,这是一个有用的选择。
该devicemapper
驱动程序使用自动精简配置和写时拷贝(全体)的快照。通常,对于每个devicemapper图形位置,
/var/lib/docker/devicemapper
基于两个块设备创建一个精简池,一个用于数据,另一个用于元数据。默认情况下,这些块设备是通过使用自动创建的稀疏文件的环回安装来自动创建的。有关如何自定义此设置的方法,请参阅下面的Devicemapper选项。
〜jpetazzo /使用Device Mapper插件大小调整Docker容器的
文章介绍了如何在不使用选项的情况下调整现有设置。
该btrfs
驱动程序的运行速度非常快docker build
-但就像devicemapper
在设备之间不共享可执行内存一样。使用
dockerd -s btrfs -g /mnt/btrfs_partition
。
该zfs
驱动程序的速度可能不及该驱动程序,btrfs
但其稳定性方面的记录更长。由于Single Copy ARC
克隆之间共享的块,因此将仅缓存一次。使用dockerd -s zfs
。zfs.fsname
如ZFS options中所述,选择不同的zfs文件系统set选项。
这overlay
是一个非常快速的联合文件系统。从3.18.0开始,它现在已合并到主要的Linux内核中。overlay
它还支持页面缓存共享,这意味着访问同一文件的多个容器可以共享一个(或多个)页面缓存条目,这使得
overlay
内存与aufs
驱动程序一样高效。打电话dockerd -s overlay
使用它。
它们overlay2
使用相同的快速联合文件系统,但是利用Linux内核4.0中添加的
其他功能来避免过多的inode消耗。打电话dockerd -s overlay2
使用它。
笔记
在
overlay
存储驱动程序可能导致过度的inode消耗(尤其是作为图像的数量的增加)。我们建议overlay2
改为使用存储驱动程序。
笔记
当前
overlay
和 或任何“写入时复制”文件系统overlay2
均不支持和两者,btrfs
并且只能在ext4
分区上使用。
该fuse-overlayfs
驱动程序类似于overlay2
但在用户空间中工作。该fuse-overlayfs
驱动程序应用于无根模式。
在Windows上,Docker守护程序支持单个映像层存储驱动程序,具体取决于映像平台:windowsfilter
对于Windows映像,以及
lcow
对于Windows上的Linux容器。
每个存储驱动程序的选项
可以使用带有--storage-opt
标志指定的选项来配置特定的存储驱动程序
。的选项devicemapper
带有dm
,zfs
开头的zfs
选项,btrfs
开头的btrfs
选项和lcow
开头的选项lcow
。
Devicemapper选项
这是Linux上devicemapper的配置文件示例:
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.thinpooldev=/dev/mapper/thin-pool",
"dm.use_deferred_deletion=true",
"dm.use_deferred_removal=true"
]
}
dm.thinpooldev
指定用于精简池的自定义块存储设备。
如果将块设备用于设备映射器存储,则最好lvm
用于创建和管理精简池卷。然后将该卷交给Docker以专门创建映像和容器所需的快照卷。
管理Engine外部的精简池是使Docker利用设备映射器精简资源调配作为Docker容器的后备存储的功能最丰富的方法。基于lvm的精简池管理功能的重点包括:自动或交互式精简池调整大小支持,动态更改精简池功能,当lvm激活精简池时自动进行精简元数据检查等。
如果没有提供精简池,则作为回退,将创建回送文件。环回速度非常慢,但是可以在不进行任何预配置存储的情况下使用。强烈建议您在生产中不要使用环回。确保您的Engine守护程序提供了一个
--storage-opt dm.thinpooldev
参数。
例子:
$ sudo dockerd --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
dm.directlvm_device
作为提供上述精简池的替代方法,Docker可以为您设置一个块设备。
例子:
$ sudo dockerd --storage-opt dm.directlvm_device=/dev/xvdf
dm.thinp_percent
设置用于存储的传入块设备的百分比。
例子:
$ sudo dockerd --storage-opt dm.thinp_percent=95
dm.thinp_metapercent
设置传入的块设备用于元数据存储的百分比。
例子:
$ sudo dockerd --storage-opt dm.thinp_metapercent=1
dm.thinp_autoextend_threshold
设置lvm
尝试自动扩展可用空间之前使用的空间百分比的值[100 =禁用]
例子:
$ sudo dockerd --storage-opt dm.thinp_autoextend_threshold=80
dm.thinp_autoextend_percent
设置值百分比值,以在lvm
尝试自动扩展可用空间时增加精简池的数量[100 =禁用]
例子:
$ sudo dockerd --storage-opt dm.thinp_autoextend_percent=20
dm.basesize
指定创建基本设备时要使用的大小,这会限制图像和容器的大小。默认值为10G。请注意,瘦设备本来就是“稀疏”的,因此一个几乎是空的10G设备不会在池上使用10 GB的空间。但是,如果设备更大,则文件系统将为空情况使用更多空间。
可以在守护程序重新启动时增加基本设备的大小,这将使所有将来的映像和容器(基于这些新映像)都具有新的基本设备大小。
例子
$ sudo dockerd --storage-opt dm.basesize=50G
这会将基本设备的大小增加到50G。如果现有基本设备大小大于50G,则Docker守护程序将引发错误。用户可以使用此选项来扩展基本设备的大小,但是不允许缩小。
此值会影响系统范围的“基本”空文件系统,该文件系统可能已由拉取的映像初始化和继承。通常,对此值进行更改需要其他步骤才能生效:
$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start
dm.loopdatasize
笔记
此选项配置devicemapper环回,不应在生产中使用。
指定为精简池使用的“数据”设备创建回送文件时要使用的大小。默认大小为100G。该文件稀疏,因此最初不会占用太多空间。
例子
$ sudo dockerd --storage-opt dm.loopdatasize=200G
dm.loopmetadatasize
笔记
此选项配置devicemapper环回,不应在生产中使用。
指定在为精简池使用的“元数据”设备创建回送文件时使用的大小。默认大小为2G。该文件稀疏,因此最初不会占用太多空间。
例子
$ sudo dockerd --storage-opt dm.loopmetadatasize=4G
dm.fs
指定用于基本设备的文件系统类型。支持的选项是“ ext4”和“ xfs”。默认值为“ xfs”
例子
$ sudo dockerd --storage-opt dm.fs=ext4
dm.mkfsarg
指定在创建基本设备时要使用的其他mkfs参数。
例子
$ sudo dockerd --storage-opt "dm.mkfsarg=-O ^has_journal"
dm.mountopt
指定在安装瘦设备时使用的额外安装选项。
例子
$ sudo dockerd --storage-opt dm.mountopt=nodiscard
dm.datadev
(已弃用,请使用dm.thinpooldev
)
指定用于精简池的数据的自定义块设备。
如果将块设备用于设备映射器存储,则最好同时使用两者,datadev
并
metadatadev
应完全避免使用回送设备。
例子
$ sudo dockerd \
--storage-opt dm.datadev=/dev/sdb1 \
--storage-opt dm.metadatadev=/dev/sdc1
dm.metadatadev
(已弃用,请使用dm.thinpooldev
)
指定用于精简池元数据的自定义块设备。
为了获得最佳性能,元数据应该与数据位于不同的主轴上,甚至最好位于SSD上。
如果设置一个新的元数据池,则它必须是有效的。这可以通过将前4k设为零以指示空的元数据来实现,如下所示:
$ 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
指定用于精简池的自定义块大小。默认的块大小为64K。
例子
$ sudo dockerd --storage-opt dm.blocksize=512K
dm.blkdiscard
启用或禁用blkdiscard
删除devicemapper设备时的使用。如果使用环回设备,则默认情况下(仅)启用此功能,并且在删除图像/容器时需要重新解析环回文件。
对回禁用这可能会导致多快容器取出时间,但会在使用的空间/var/lib/docker
Directory容器被删除时不返回到系统用于其他用途。
例子
$ sudo dockerd --storage-opt dm.blkdiscard=false
dm.override_udev_sync_check
覆盖和udev
之间的同步检查。
是Linux内核的设备管理器。devicemapper
udev
udev
要查看udev
使用该devicemapper
驱动程序的Docker守护程序的同步支持
,请运行:
$ docker info
[...]
Udev Sync Supported: true
[...]
当udev
同步支持是true
,则devicemapper
和的udev可以协调用于容器的设备的激活和去激活。
当udev
同步支持是false
,在之间出现争用条件devicemapper
和udev
过程中创建和清理。竞争条件会导致错误和失败。(有关这些失败的信息,请参阅
docker#4036)
要允许docker
守护程序启动,而不考虑udev
不支持同步,请将其设置dm.override_udev_sync_check
为true:
$ sudo dockerd --storage-opt dm.override_udev_sync_check=true
当该值为时true
, devicemapper
继续并仅警告您正在发生的错误。
笔记
理想的情况是追求一个
docker
不支持与同步的守护程序和环境udev
。有关此主题的更多讨论,请参阅docker#4036。否则,请设置此标志以将现有Docker守护程序迁移到具有受支持环境的守护程序。
dm.use_deferred_removal
如果libdm
并且内核驱动程序支持该机制,则启用延迟设备删除功能。
延迟设备删除意味着在删除/停用设备时,如果设备正忙,则计划在设备上进行延迟删除。当设备的最后一个用户退出时,设备会自动消失。
例如,当容器退出时,其关联的瘦设备将被移除。如果该设备泄漏到其他安装名称空间中并且无法删除,则容器退出仍然成功,并且此选项导致系统安排该设备进行延迟删除。它不会在循环中尝试删除忙碌的设备。
例子
$ sudo dockerd --storage-opt dm.use_deferred_removal=true
dm.use_deferred_deletion
启用对精简池设备使用延迟的设备删除。默认情况下,精简池设备删除是同步的。在删除容器之前,Docker守护程序会删除所有关联的设备。如果存储驱动程序无法删除设备,则容器删除失败并返回守护程序。
Error deleting container: Error response from daemon: Cannot destroy container
为避免此故障,请在守护程序上同时启用延迟的设备删除和延迟的设备删除。
$ sudo dockerd \
--storage-opt dm.use_deferred_deletion=true \
--storage-opt dm.use_deferred_removal=true
启用这两个选项后,如果在驱动程序删除容器时设备正忙,则驱动程序会将设备标记为已删除。以后,当不使用该设备时,驱动程序将其删除。
通常,默认情况下启用此选项应该是安全的。当跨多个安装名称空间发生意外的安装点泄漏时,它将提供帮助。
dm.min_free_space
指定成功创建新设备所需的精简池中的最小可用空间百分比。此检查适用于可用数据空间以及可用元数据空间。有效值为0%-99%。值0%禁用可用空间检查逻辑。如果用户未为此选项指定值,则引擎将使用默认值10%。
每当创建新的精简池设备时(在docker pull
容器创建过程中或在容器创建过程中),引擎都会检查是否有最小可用空间。如果没有足够的空间,则设备创建将失败,并且任何相关docker
操作也会失败。
要从该错误中恢复,必须在精简池中创建更多可用空间以从该错误中恢复。您可以通过从精简池中删除一些图像和容器来创建可用空间。您还可以向精简池添加更多存储。
要将更多空间添加到LVM(逻辑卷管理)瘦池中,只需将更多存储添加到卷组容器瘦池中即可。这应该会自动解决所有错误。如果您的配置使用循环设备,则停止Engine守护程序,增大循环文件的大小,然后重新启动该守护程序以解决此问题。
例子
$ sudo dockerd --storage-opt dm.min_free_space=10%
dm.xfs_nospace_max_retries
指定基础存储设备返回ENOSPC(无空间)错误时XFS应该尝试完成IO的最大重试次数。
默认情况下,XFS无限次重试以完成IO,这可能会导致无法终止的过程。要更改此行为,可以将xfs_nospace_max_retries设置为0,并且XFS在获取ENOSPC之后将不重试IO,并且将关闭文件系统。
例子
$ sudo dockerd --storage-opt dm.xfs_nospace_max_retries=0
dm.libdm_log_level
指定libdm
将转发到dockerd
日志的最大日志级别
(由指定--log-level
)。此选项主要用于调试涉及的问题libdm
。使用默认值以外的值可能会导致记录错误肯定的警告。
指定的值必须在有效libdm
日志级别的范围内。在撰写本文时,以下是libdm
日志级别及其通过输出时的相应级别的列表dockerd
。
libdm 等级 |
价值 | --log-level |
---|---|---|
_LOG_FATAL |
2个 | 错误 |
_LOG_ERR |
3 | 错误 |
_LOG_WARN |
4 | 警告 |
_LOG_NOTICE |
5 | 信息 |
_LOG_INFO |
6 | 信息 |
_LOG_DEBUG |
7 | 调试 |
例子
$ sudo dockerd \
--log-level debug \
--storage-opt dm.libdm_log_level=7
ZFS选项
zfs.fsname
设置zfs文件系统,Docker将在该文件系统下创建自己的数据集。默认情况下,docker将选择docker graph(/var/lib/docker
)所在的zfs文件系统。
例子
$ sudo dockerd -s zfs --storage-opt zfs.fsname=zroot/docker
Btrfs选项
btrfs.min_space
指定创建用于容器的子卷时要使用的最小大小。如果用户在使用--storage-opt size选项创建或运行容器时使用btrfs的磁盘配额,则docker应确保 大小不能小于btrfs.min_space。
例子
$ sudo dockerd -s btrfs --storage-opt btrfs.min_space=10G
叠加2选项
overlay2.override_kernel_check
覆盖允许overlay2的Linux内核版本检查。在4.0.0版本中,对Linux2内核中添加了对overlay2所需的多个较低目录的支持。但是,可能会修补某些较旧的内核版本,以添加对OverlayFS的多个较低目录支持。仅在验证内核中是否存在此支持后,才应使用此选项。在没有此支持的情况下在内核上应用此选项将导致安装失败。
overlay2.size
设置容器的默认最大大小。仅当支持fsxfs
并通过pquota
mount选项安装时才支持该功能。在这些条件下,用户可以通过小于背衬fs尺寸的任何尺寸。
例子
$ sudo dockerd -s overlay2 --storage-opt overlay2.size=1G
Windowsfilter选项
size
指定在创建用于容器的沙箱时使用的大小。默认为20G。
例子
C:\> dockerd --storage-opt size=40G
LCOW(Windows上的Linux容器)选项
lcow.globalmode
指定守护程序是根据需要实例化实用程序VM实例(建议使用默认值,如果省略则默认),还是使用单个全局实用程序VM(性能更好,但具有安全隐患,不建议用于生产部署)。
例子
C:\> dockerd --storage-opt lcow.globalmode=false
lcow.kirdpath
指定用于引导实用程序VM的一对内核文件和initrd文件的位置的文件夹路径。默认为%ProgramFiles%\Linux Containers
。
例子
C:\> dockerd --storage-opt lcow.kirdpath=c:\path\to\files
lcow.kernel
指定位于lcow.kirdpath
路径中的内核文件的文件名。默认为bootx64.efi
。
例子
C:\> dockerd --storage-opt lcow.kernel=kernel.efi
lcow.initrd
指定位于lcow.kirdpath
路径中的initrd文件的文件名。默认为initrd.img
。
例子
C:\> dockerd --storage-opt lcow.initrd=myinitrd.img
lcow.bootparameters
指定在内核/ initrd模式下引导实用程序VM的其他引导参数。忽略实用程序VM是否从VHD引导。这些设置是特定于内核的。
例子
C:\> dockerd --storage-opt "lcow.bootparameters='option=value'"
lcow.vhdx
指定自定义VHDX来引导实用程序VM,作为内核和initrd引导的替代方法。默认为uvm.vhdx
under lcow.kirdpath
。
例子
C:\> dockerd --storage-opt lcow.vhdx=custom.vhdx
lcow.timeout
指定实用程序VM操作的超时时间(以秒为单位)。默认为300。
例子
C:\> dockerd --storage-opt lcow.timeout=240
lcow.sandboxsize
指定创建用于容器的沙箱时要使用的GB大小。默认值为20。不能小于20。
例子
C:\> dockerd --storage-opt lcow.sandboxsize=40
Docker运行时执行选项
泊坞窗守护进程依赖于
OCI兼容的运行(通过调用containerd
后台程序)作为其接口Linux内核namespaces
,cgroups
以及SELinux
。
默认情况下,Docker守护程序会自动启动containerd
。如果要控制containerd
启动,请手动启动containerd
并containerd
使用该--containerd
标志将路径传递到套接字。例如:
$ sudo dockerd --containerd /var/run/dev/docker-containerd.sock
可以通过配置文件或使用--add-runtime
命令行参数在守护程序中注册运行时。
以下是通过配置添加2个运行时的示例:
{
"default-runtime": "runc",
"runtimes": {
"custom": {
"path": "/usr/local/bin/my-runc-replacement",
"runtimeArgs": [
"--debug"
]
},
"runc": {
"path": "runc"
}
}
}
这是通过命令行的相同示例:
$ sudo dockerd --add-runtime runc=runc --add-runtime custom=/usr/local/bin/my-runc-replacement
笔记
不支持通过命令行定义运行时参数。
运行时的选项
您可以使用通过--exec-opt
标志指定的选项来配置运行时。所有标志的选项都有native
前缀。单个native.cgroupdriver
选项可用。
该native.cgroupdriver
选项指定容器的cgroup的管理。您只能指定cgroupfs
或systemd
。如果您指定
systemd
它不可用,则系统会出错。如果您忽略此
native.cgroupdriver
选项, cgroupfs
则在cgroup v1主机systemd
上使用,在systemd可用的cgroup v2主机上使用。
本示例将设置cgroupdriver
为systemd
:
$ sudo dockerd --exec-opt native.cgroupdriver=systemd
设置此选项适用于守护程序启动的所有容器。
Windows容器也将其--exec-opt
用于特殊目的。Docker用户可以以此指定默认的容器隔离技术,例如:
> dockerd --exec-opt isolation=hyperv
将成为hyperv
Windows上的默认隔离技术。如果在守护程序启动时未指定隔离值,则在Windows客户端上,默认值为
hyperv
,在Windows服务器上,默认值为process
。
守护程序DNS选项
要为所有Docker容器设置DNS服务器,请使用:
$ sudo dockerd --dns 8.8.8.8
要为所有Docker容器设置DNS搜索域,请使用:
$ sudo dockerd --dns-search example.com
允许推送不可分发的工件
某些图像(例如Windows基本图像)包含伪造品,其伪造品受许可证限制。将这些图像推送到注册表时,不包括受限的工件。
要为特定注册表覆盖此行为,请使用--allow-nondistributable-artifacts
以下形式之一的
选项:
--allow-nondistributable-artifacts myregistry:5000
告诉Docker守护程序将不可分发的工件推送到myregistry:5000。--allow-nondistributable-artifacts 10.1.0.0/16
告诉Docker守护程序将不可分发的工件推送到所有解析的IP地址在CIDR语法描述的子网内的注册表中。
此选项可以多次使用。
当将包含不可分发的工件的图像推送到气隙网络上的注册表时,此选项很有用,这样该网络上的主机可以拉出图像而无需连接到另一台服务器。
警告:不可分发的工件通常在如何以及在何处以及如何共享方面受到限制。仅使用此功能将工件推送到私有注册表,并确保您遵守涵盖重新分发不可分发工件的所有条款。
不安全的注册表
Docker认为私有注册表是安全的还是不安全的。在本节的其余部分中,注册表用于私有注册表,并且myregistry:5000
是私有注册表的占位符示例。
安全注册表使用TLS,并将其CA证书的副本放置在Docker主机上,网址为/etc/docker/certs.d/myregistry:5000/ca.crt
。不安全的注册表要么不使用TLS(即侦听纯文本HTTP),要么正在使用TLS和Docker守护程序未知的CA证书。当在下没有找到证书时/etc/docker/certs.d/myregistry:5000/
,或者证书验证失败(即,错误的CA)时,可能会发生后者
。
默认情况下,Docker假设所有(但本地(请参阅下面的本地注册表))注册表都是安全的。如果Docker认为注册表是安全的,则无法与不安全的注册表进行通信。在或