码头工人

守护程序

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": truedaemon.json文件中。

启用实验功能

通过启动启用实验性功能dockerd--experimental 标志或添加"experimental": truedaemon.json文件。

环境变量

为了便于参考,dockerd命令行支持以下环境变量列表:

  • DOCKER_DRIVER 要使用的图形驱动程序。
  • DOCKER_NOWARN_KERNEL_VERSION 防止警告您的Linux内核不适合Docker。
  • DOCKER_RAMDISK 如果设置,将禁用“ pivot_root”。
  • DOCKER_TMPDIR 临时Docker文件的位置。
  • MOBY_DISABLE_PIGZunpigz拉取图像时,即使已安装,也不要用于并行解压缩图层。

例子

守护程序套接字选项

泊坞窗守护程序可以监听泊坞引擎API 通过三种不同类型的Socket请求:unixtcp,和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_PROXYHTTPS_PROXYNO_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:2376Windows。

-H 接受以下格式的主机和端口分配:

tcp://[host]:[port][path] or unix://path

例如:

  • tcp://->127.0.0.1启用2376TLS加密时,TCP连接到任一端口,或者2375以纯文本方式时,端口与TCP连接。
  • tcp://host:2375 ->主机上的TCP连接:2375
  • tcp://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上,码头工人守护进程有几种不同的图像层存储驱动程序支持:aufsdevicemapperbtrfszfsoverlayoverlay2,和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 zfszfs.fsnameZFS 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带有dmzfs开头的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

指定用于精简池的数据的自定义块设备。

如果将块设备用于设备映射器存储,则最好同时使用两者,datadevmetadatadev应完全避免使用回送设备。

例子
$ 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/dockerDirectory容器被删除时不返回到系统用于其他用途。

例子
$ sudo dockerd --storage-opt dm.blkdiscard=false
dm.override_udev_sync_check

覆盖和udev之间的同步检查。 是Linux内核的设备管理器。devicemapperudevudev

要查看udev使用该devicemapper驱动程序的Docker守护程序的同步支持 ,请运行:

$ docker info
[...]
Udev Sync Supported: true
[...]

udev同步支持是true,则devicemapper和的udev可以协调用于容器的设备的激活和去激活。

udev同步支持是false,在之间出现争用条件devicemapperudev过程中创建和清理。竞争条件会导致错误和失败。(有关这些失败的信息,请参阅 docker#4036

要允许docker守护程序启动,而不考虑udev不支持同步,请将其设置dm.override_udev_sync_check为true:

$ sudo dockerd --storage-opt dm.override_udev_sync_check=true

当该值为时truedevicemapper继续并仅警告您正在发生的错误。

笔记

理想的情况是追求一个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并通过pquotamount选项安装时才支持该功能。在这些条件下,用户可以通过小于背衬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.vhdxunder 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内核namespacescgroups以及SELinux

默认情况下,Docker守护程序会自动启动containerd。如果要控制containerd启动,请手动启动containerdcontainerd使用该--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的管理。您只能指定cgroupfssystemd。如果您指定 systemd它不可用,则系统会出错。如果您忽略此 native.cgroupdriver选项, cgroupfs则在cgroup v1主机systemd 上使用,在systemd可用的cgroup v2主机上使用。

本示例将设置cgroupdriversystemd

$ sudo dockerd --exec-opt native.cgroupdriver=systemd

设置此选项适用于守护程序启动的所有容器。

Windows容器也将其--exec-opt用于特殊目的。Docker用户可以以此指定默认的容器隔离技术,例如:

> dockerd --exec-opt isolation=hyperv

将成为hypervWindows上的默认隔离技术。如果在守护程序启动时未指定隔离值,则在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认为注册表是安全的,则无法与不安全的注册表进行通信。在或