github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/man/dockerd.8.md (about)

     1  % DOCKER(8) Docker User Manuals
     2  % Shishir Mahajan
     3  % SEPTEMBER 2015
     4  # NAME
     5  dockerd - Enable daemon mode
     6  
     7  # SYNOPSIS
     8  **dockerd**
     9  [**--add-runtime**[=*[]*]]
    10  [**--api-cors-header**=[=*API-CORS-HEADER*]]
    11  [**--authorization-plugin**[=*[]*]]
    12  [**-b**|**--bridge**[=*BRIDGE*]]
    13  [**--bip**[=*BIP*]]
    14  [**--cgroup-parent**[=*[]*]]
    15  [**--cluster-store**[=*[]*]]
    16  [**--cluster-advertise**[=*[]*]]
    17  [**--cluster-store-opt**[=*map[]*]]
    18  [**--config-file**[=*/etc/docker/daemon.json*]]
    19  [**--containerd**[=*SOCKET-PATH*]]
    20  [**-D**|**--debug**]
    21  [**--default-gateway**[=*DEFAULT-GATEWAY*]]
    22  [**--default-gateway-v6**[=*DEFAULT-GATEWAY-V6*]]
    23  [**--default-ulimit**[=*[]*]]
    24  [**--disable-legacy-registry**]
    25  [**--dns**[=*[]*]]
    26  [**--dns-opt**[=*[]*]]
    27  [**--dns-search**[=*[]*]]
    28  [**--exec-opt**[=*[]*]]
    29  [**--exec-root**[=*/var/run/docker*]]
    30  [**--experimental**[=*false*]]
    31  [**--fixed-cidr**[=*FIXED-CIDR*]]
    32  [**--fixed-cidr-v6**[=*FIXED-CIDR-V6*]]
    33  [**-G**|**--group**[=*docker*]]
    34  [**-g**|**--graph**[=*/var/lib/docker*]]
    35  [**-H**|**--host**[=*[]*]]
    36  [**--help**]
    37  [**--icc**[=*true*]]
    38  [**--init**[=*false*]]
    39  [**--init-path**[=*""*]]
    40  [**--insecure-registry**[=*[]*]]
    41  [**--ip**[=*0.0.0.0*]]
    42  [**--ip-forward**[=*true*]]
    43  [**--ip-masq**[=*true*]]
    44  [**--iptables**[=*true*]]
    45  [**--ipv6**]
    46  [**--isolation**[=*default*]]
    47  [**-l**|**--log-level**[=*info*]]
    48  [**--label**[=*[]*]]
    49  [**--live-restore**[=*false*]]
    50  [**--log-driver**[=*json-file*]]
    51  [**--log-opt**[=*map[]*]]
    52  [**--mtu**[=*0*]]
    53  [**--max-concurrent-downloads**[=*3*]]
    54  [**--max-concurrent-uploads**[=*5*]]
    55  [**-p**|**--pidfile**[=*/var/run/docker.pid*]]
    56  [**--raw-logs**]
    57  [**--registry-mirror**[=*[]*]]
    58  [**-s**|**--storage-driver**[=*STORAGE-DRIVER*]]
    59  [**--seccomp-profile**[=*SECCOMP-PROFILE-PATH*]]
    60  [**--selinux-enabled**]
    61  [**--shutdown-timeout**[=*15*]]
    62  [**--storage-opt**[=*[]*]]
    63  [**--swarm-default-advertise-addr**[=*IP|INTERFACE*]]
    64  [**--tls**]
    65  [**--tlscacert**[=*~/.docker/ca.pem*]]
    66  [**--tlscert**[=*~/.docker/cert.pem*]]
    67  [**--tlskey**[=*~/.docker/key.pem*]]
    68  [**--tlsverify**]
    69  [**--userland-proxy**[=*true*]]
    70  [**--userland-proxy-path**[=*""*]]
    71  [**--userns-remap**[=*default*]]
    72  
    73  # DESCRIPTION
    74  **dockerd** is used for starting the Docker daemon (i.e., to command the daemon
    75  to manage images, containers etc).  So **dockerd** is a server, as a daemon.
    76  
    77  To run the Docker daemon you can specify **dockerd**.
    78  You can check the daemon options using **dockerd --help**.
    79  Daemon options should be specified after the **dockerd** keyword in the
    80  following format.
    81  
    82  **dockerd [OPTIONS]**
    83  
    84  # OPTIONS
    85  
    86  **--add-runtime**=[]
    87    Set additional OCI compatible runtime.
    88  
    89  **--api-cors-header**=""
    90    Set CORS headers in the Engine API. Default is cors disabled. Give urls like
    91    "http://foo, http://bar, ...". Give "*" to allow all.
    92  
    93  **--authorization-plugin**=""
    94    Set authorization plugins to load
    95  
    96  **-b**, **--bridge**=""
    97    Attach containers to a pre\-existing network bridge; use 'none' to disable
    98    container networking
    99  
   100  **--bip**=""
   101    Use the provided CIDR notation address for the dynamically created bridge
   102    (docker0); Mutually exclusive of \-b
   103  
   104  **--cgroup-parent**=""
   105    Set parent cgroup for all containers. Default is "/docker" for fs cgroup
   106    driver and "system.slice" for systemd cgroup driver.
   107  
   108  **--cluster-store**=""
   109    URL of the distributed storage backend
   110  
   111  **--cluster-advertise**=""
   112    Specifies the 'host:port' or `interface:port` combination that this
   113    particular daemon instance should use when advertising itself to the cluster.
   114    The daemon is reached through this value.
   115  
   116  **--cluster-store-opt**=""
   117    Specifies options for the Key/Value store.
   118  
   119  **--config-file**="/etc/docker/daemon.json"
   120    Specifies the JSON file path to load the configuration from.
   121  
   122  **--containerd**=""
   123    Path to containerd socket.
   124  
   125  **-D**, **--debug**=*true*|*false*
   126    Enable debug mode. Default is false.
   127  
   128  **--default-gateway**=""
   129    IPv4 address of the container default gateway; this address must be part of
   130    the bridge subnet (which is defined by \-b or \--bip)
   131  
   132  **--default-gateway-v6**=""
   133    IPv6 address of the container default gateway
   134  
   135  **--default-ulimit**=[]
   136    Default ulimits for containers.
   137  
   138  **--disable-legacy-registry**=*true*|*false*
   139    Disable contacting legacy registries
   140  
   141  **--dns**=""
   142    Force Docker to use specific DNS servers
   143  
   144  **--dns-opt**=""
   145    DNS options to use.
   146  
   147  **--dns-search**=[]
   148    DNS search domains to use.
   149  
   150  **--exec-opt**=[]
   151    Set runtime execution options. See RUNTIME EXECUTION OPTIONS.
   152  
   153  **--exec-root**=""
   154    Path to use as the root of the Docker execution state files. Default is
   155    `/var/run/docker`.
   156  
   157  **--experimental**=""
   158    Enable the daemon experimental features.
   159  
   160  **--fixed-cidr**=""
   161    IPv4 subnet for fixed IPs (e.g., 10.20.0.0/16); this subnet must be nested in
   162    the bridge subnet (which is defined by \-b or \-\-bip).
   163  
   164  **--fixed-cidr-v6**=""
   165    IPv6 subnet for global IPv6 addresses (e.g., 2a00:1450::/64)
   166  
   167  **-G**, **--group**=""
   168    Group to assign the unix socket specified by -H when running in daemon mode.
   169    use '' (the empty string) to disable setting of a group. Default is `docker`.
   170  
   171  **-g**, **--graph**=""
   172    Path to use as the root of the Docker runtime. Default is `/var/lib/docker`.
   173  
   174  **-H**, **--host**=[*unix:///var/run/docker.sock*]: tcp://[host:port] to bind or
   175  unix://[/path/to/socket] to use.
   176    The socket(s) to bind to in daemon mode specified using one or more
   177    tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.
   178  
   179  **--help**
   180    Print usage statement
   181  
   182  **--icc**=*true*|*false*
   183    Allow unrestricted inter\-container and Docker daemon host communication. If
   184    disabled, containers can still be linked together using the **--link** option
   185    (see **docker-run(1)**). Default is true.
   186  
   187  **--init**
   188    Run an init process inside containers for signal forwarding and process
   189    reaping.
   190  
   191  **--init-path**
   192    Path to the docker-init binary.
   193  
   194  **--insecure-registry**=[]
   195    Enable insecure registry communication, i.e., enable un-encrypted and/or
   196    untrusted communication.
   197  
   198    List of insecure registries can contain an element with CIDR notation to
   199    specify a whole subnet. Insecure registries accept HTTP and/or accept HTTPS
   200    with certificates from unknown CAs.
   201  
   202    Enabling `--insecure-registry` is useful when running a local registry.
   203    However, because its use creates security vulnerabilities it should ONLY be
   204    enabled for testing purposes.  For increased security, users should add their
   205    CA to their system's list of trusted CAs instead of using
   206    `--insecure-registry`.
   207  
   208  **--ip**=""
   209    Default IP address to use when binding container ports. Default is `0.0.0.0`.
   210  
   211  **--ip-forward**=*true*|*false*
   212    Enables IP forwarding on the Docker host. The default is `true`. This flag
   213    interacts with the IP forwarding setting on your host system's kernel. If
   214    your system has IP forwarding disabled, this setting enables it. If your
   215    system has IP forwarding enabled, setting this flag to `--ip-forward=false`
   216    has no effect.
   217  
   218    This setting will also enable IPv6 forwarding if you have both
   219    `--ip-forward=true` and `--fixed-cidr-v6` set. Note that this may reject
   220    Router Advertisements and interfere with the host's existing IPv6
   221    configuration. For more information, please consult the documentation about
   222    "Advanced Networking - IPv6".
   223  
   224  **--ip-masq**=*true*|*false*
   225    Enable IP masquerading for bridge's IP range. Default is true.
   226  
   227  **--iptables**=*true*|*false*
   228    Enable Docker's addition of iptables rules. Default is true.
   229  
   230  **--ipv6**=*true*|*false*
   231    Enable IPv6 support. Default is false. Docker will create an IPv6-enabled
   232    bridge with address fe80::1 which will allow you to create IPv6-enabled
   233    containers. Use together with `--fixed-cidr-v6` to provide globally routable
   234    IPv6 addresses. IPv6 forwarding will be enabled if not used with
   235    `--ip-forward=false`. This may collide with your host's current IPv6
   236    settings. For more information please consult the documentation about
   237    "Advanced Networking - IPv6".
   238  
   239  **--isolation**="*default*"
   240     Isolation specifies the type of isolation technology used by containers.
   241     Note that the default on Windows server is `process`, and the default on
   242     Windows client is `hyperv`. Linux only supports `default`.
   243  
   244  **-l**, **--log-level**="*debug*|*info*|*warn*|*error*|*fatal*"
   245    Set the logging level. Default is `info`.
   246  
   247  **--label**="[]"
   248    Set key=value labels to the daemon (displayed in `docker info`)
   249  
   250  **--live-restore**=*false*
   251    Enable live restore of running containers when the daemon starts so that they
   252    are not restarted. This option is applicable only for docker daemon running
   253    on Linux host.
   254  
   255  **--log-driver**="*json-file*|*syslog*|*journald*|*gelf*|*fluentd*|*awslogs*|*splunk*|*etwlogs*|*gcplogs*|*none*"
   256    Default driver for container logs. Default is `json-file`.
   257    **Warning**: `docker logs` command works only for `json-file` logging driver.
   258  
   259  **--log-opt**=[]
   260    Logging driver specific options.
   261  
   262  **--mtu**=*0*
   263    Set the containers network mtu. Default is `0`.
   264  
   265  **--max-concurrent-downloads**=*3*
   266    Set the max concurrent downloads for each pull. Default is `3`.
   267  
   268  **--max-concurrent-uploads**=*5*
   269    Set the max concurrent uploads for each push. Default is `5`.
   270  
   271  **-p**, **--pidfile**=""
   272    Path to use for daemon PID file. Default is `/var/run/docker.pid`
   273  
   274  **--raw-logs**
   275    Output daemon logs in full timestamp format without ANSI coloring. If this
   276    flag is not set, the daemon outputs condensed, colorized logs if a terminal
   277    is detected, or full ("raw") output otherwise.
   278  
   279  **--registry-mirror**=*<scheme>://<host>*
   280    Prepend a registry mirror to be used for image pulls. May be specified
   281    multiple times.
   282  
   283  **-s**, **--storage-driver**=""
   284    Force the Docker runtime to use a specific storage driver.
   285  
   286  **--seccomp-profile**=""
   287    Path to seccomp profile.
   288  
   289  **--selinux-enabled**=*true*|*false*
   290    Enable selinux support. Default is false.
   291  
   292  **--shutdown-timeout**=*15*
   293    Set the shutdown timeout value in seconds. Default is `15`.
   294  
   295  **--storage-opt**=[]
   296    Set storage driver options. See STORAGE DRIVER OPTIONS.
   297  
   298  **--swarm-default-advertise-addr**=*IP|INTERFACE*
   299    Set default address or interface for swarm to advertise as its
   300    externally-reachable address to other cluster members. This can be a
   301    hostname, an IP address, or an interface such as `eth0`. A port cannot be
   302    specified with this option.
   303  
   304  **--tls**=*true*|*false*
   305    Use TLS; implied by --tlsverify. Default is false.
   306  
   307  **--tlscacert**=*~/.docker/ca.pem*
   308    Trust certs signed only by this CA.
   309  
   310  **--tlscert**=*~/.docker/cert.pem*
   311    Path to TLS certificate file.
   312  
   313  **--tlskey**=*~/.docker/key.pem*
   314    Path to TLS key file.
   315  
   316  **--tlsverify**=*true*|*false*
   317    Use TLS and verify the remote (daemon: verify client, client: verify daemon).
   318    Default is false.
   319  
   320  **--userland-proxy**=*true*|*false*
   321    Rely on a userland proxy implementation for inter-container and
   322    outside-to-container loopback communications. Default is true.
   323  
   324  **--userland-proxy-path**=""
   325    Path to the userland proxy binary.
   326  
   327  **--userns-remap**=*default*|*uid:gid*|*user:group*|*user*|*uid*
   328    Enable user namespaces for containers on the daemon. Specifying "default"
   329    will cause a new user and group to be created to handle UID and GID range
   330    remapping for the user namespace mappings used for contained processes.
   331    Specifying a user (or uid) and optionally a group (or gid) will cause the
   332    daemon to lookup the user and group's subordinate ID ranges for use as the
   333    user namespace mappings for contained processes.
   334  
   335  # STORAGE DRIVER OPTIONS
   336  
   337  Docker uses storage backends (known as "graphdrivers" in the Docker
   338  internals) to create writable containers from images.  Many of these
   339  backends use operating system level technologies and can be
   340  configured.
   341  
   342  Specify options to the storage backend with **--storage-opt** flags. The
   343  backends that currently take options are *devicemapper*, *zfs* and *btrfs*.
   344  Options for *devicemapper* are prefixed with *dm*, options for *zfs*
   345  start with *zfs* and options for *btrfs* start with *btrfs*.
   346  
   347  Specifically for devicemapper, the default is a "loopback" model which
   348  requires no pre-configuration, but is extremely inefficient.  Do not
   349  use it in production.
   350  
   351  To make the best use of Docker with the devicemapper backend, you must
   352  have a recent version of LVM.  Use `lvm` to create a thin pool; for
   353  more information see `man lvmthin`.  Then, use `--storage-opt
   354  dm.thinpooldev` to tell the Docker engine to use that pool for
   355  allocating images and container snapshots.
   356  
   357  ## Devicemapper options
   358  
   359  #### dm.thinpooldev
   360  
   361  Specifies a custom block storage device to use for the thin pool.
   362  
   363  If using a block device for device mapper storage, it is best to use `lvm`
   364  to create and manage the thin-pool volume. This volume is then handed to Docker
   365  to exclusively create snapshot volumes needed for images and containers.
   366  
   367  Managing the thin-pool outside of Engine makes for the most feature-rich
   368  method of having Docker utilize device mapper thin provisioning as the
   369  backing storage for Docker containers. The highlights of the lvm-based
   370  thin-pool management feature include: automatic or interactive thin-pool
   371  resize support, dynamically changing thin-pool features, automatic thinp
   372  metadata checking when lvm activates the thin-pool, etc.
   373  
   374  As a fallback if no thin pool is provided, loopback files are
   375  created. Loopback is very slow, but can be used without any
   376  pre-configuration of storage. It is strongly recommended that you do
   377  not use loopback in production. Ensure your Engine daemon has a
   378  `--storage-opt dm.thinpooldev` argument provided.
   379  
   380  Example use:
   381  
   382     $ dockerd \
   383           --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
   384  
   385  #### dm.basesize
   386  
   387  Specifies the size to use when creating the base device, which limits
   388  the size of images and containers. The default value is 10G. Note,
   389  thin devices are inherently "sparse", so a 10G device which is mostly
   390  empty doesn't use 10 GB of space on the pool. However, the filesystem
   391  will use more space for base images the larger the device
   392  is.
   393  
   394  The base device size can be increased at daemon restart which will allow
   395  all future images and containers (based on those new images) to be of the
   396  new base device size.
   397  
   398  Example use: `dockerd --storage-opt dm.basesize=50G`
   399  
   400  This will increase the base device size to 50G. The Docker daemon will throw an
   401  error if existing base device size is larger than 50G. A user can use
   402  this option to expand the base device size however shrinking is not permitted.
   403  
   404  This value affects the system-wide "base" empty filesystem that may already
   405  be initialized and inherited by pulled images. Typically, a change to this
   406  value requires additional steps to take effect:
   407  
   408          $ sudo service docker stop
   409          $ sudo rm -rf /var/lib/docker
   410          $ sudo service docker start
   411  
   412  Example use: `dockerd --storage-opt dm.basesize=20G`
   413  
   414  #### dm.fs
   415  
   416  Specifies the filesystem type to use for the base device. The
   417  supported options are `ext4` and `xfs`. The default is `ext4`.
   418  
   419  Example use: `dockerd --storage-opt dm.fs=xfs`
   420  
   421  #### dm.mkfsarg
   422  
   423  Specifies extra mkfs arguments to be used when creating the base device.
   424  
   425  Example use: `dockerd --storage-opt "dm.mkfsarg=-O ^has_journal"`
   426  
   427  #### dm.mountopt
   428  
   429  Specifies extra mount options used when mounting the thin devices.
   430  
   431  Example use: `dockerd --storage-opt dm.mountopt=nodiscard`
   432  
   433  #### dm.use_deferred_removal
   434  
   435  Enables use of deferred device removal if `libdm` and the kernel driver
   436  support the mechanism.
   437  
   438  Deferred device removal means that if device is busy when devices are
   439  being removed/deactivated, then a deferred removal is scheduled on
   440  device. And devices automatically go away when last user of the device
   441  exits.
   442  
   443  For example, when a container exits, its associated thin device is removed. If
   444  that device has leaked into some other mount namespace and can't be removed,
   445  the container exit still succeeds and this option causes the system to schedule
   446  the device for deferred removal. It does not wait in a loop trying to remove a
   447  busy device.
   448  
   449  Example use: `dockerd --storage-opt dm.use_deferred_removal=true`
   450  
   451  #### dm.use_deferred_deletion
   452  
   453  Enables use of deferred device deletion for thin pool devices. By default,
   454  thin pool device deletion is synchronous. Before a container is deleted, the
   455  Docker daemon removes any associated devices. If the storage driver can not
   456  remove a device, the container deletion fails and daemon returns.
   457  
   458  `Error deleting container: Error response from daemon: Cannot destroy container`
   459  
   460  To avoid this failure, enable both deferred device deletion and deferred
   461  device removal on the daemon.
   462  
   463  `dockerd --storage-opt dm.use_deferred_deletion=true --storage-opt dm.use_deferred_removal=true`
   464  
   465  With these two options enabled, if a device is busy when the driver is
   466  deleting a container, the driver marks the device as deleted. Later, when the
   467  device isn't in use, the driver deletes it.
   468  
   469  In general it should be safe to enable this option by default. It will help
   470  when unintentional leaking of mount point happens across multiple mount
   471  namespaces.
   472  
   473  #### dm.loopdatasize
   474  
   475  **Note**: This option configures devicemapper loopback, which should not be
   476  used in production.
   477  
   478  Specifies the size to use when creating the loopback file for the "data" device
   479  which is used for the thin pool. The default size is 100G. The file is sparse,
   480  so it will not initially take up this much space.
   481  
   482  Example use: `dockerd --storage-opt dm.loopdatasize=200G`
   483  
   484  #### dm.loopmetadatasize
   485  
   486  **Note**: This option configures devicemapper loopback, which should not be
   487  used in production.
   488  
   489  Specifies the size to use when creating the loopback file for the "metadata"
   490  device which is used for the thin pool. The default size is 2G. The file is
   491  sparse, so it will not initially take up this much space.
   492  
   493  Example use: `dockerd --storage-opt dm.loopmetadatasize=4G`
   494  
   495  #### dm.datadev
   496  
   497  (Deprecated, use `dm.thinpooldev`)
   498  
   499  Specifies a custom blockdevice to use for data for a Docker-managed thin pool.
   500  It is better to use `dm.thinpooldev` - see the documentation for it above for
   501  discussion of the advantages.
   502  
   503  #### dm.metadatadev
   504  
   505  (Deprecated, use `dm.thinpooldev`)
   506  
   507  Specifies a custom blockdevice to use for metadata for a Docker-managed thin
   508  pool.  See `dm.datadev` for why this is deprecated.
   509  
   510  #### dm.blocksize
   511  
   512  Specifies a custom blocksize to use for the thin pool.  The default
   513  blocksize is 64K.
   514  
   515  Example use: `dockerd --storage-opt dm.blocksize=512K`
   516  
   517  #### dm.blkdiscard
   518  
   519  Enables or disables the use of `blkdiscard` when removing devicemapper devices.
   520  This is disabled by default due to the additional latency, but as a special
   521  case with loopback devices it will be enabled, in order to re-sparsify the
   522  loopback file on image/container removal.
   523  
   524  Disabling this on loopback can lead to *much* faster container removal times,
   525  but it also prevents the space used in `/var/lib/docker` directory from being
   526  returned to the system for other use when containers are removed.
   527  
   528  Example use: `dockerd --storage-opt dm.blkdiscard=false`
   529  
   530  #### dm.override_udev_sync_check
   531  
   532  By default, the devicemapper backend attempts to synchronize with the `udev`
   533  device manager for the Linux kernel.  This option allows disabling that
   534  synchronization, to continue even though the configuration may be buggy.
   535  
   536  To view the `udev` sync support of a Docker daemon that is using the
   537  `devicemapper` driver, run:
   538  
   539          $ docker info
   540          [...]
   541           Udev Sync Supported: true
   542          [...]
   543  
   544  When `udev` sync support is `true`, then `devicemapper` and `udev` can
   545  coordinate the activation and deactivation of devices for containers.
   546  
   547  When `udev` sync support is `false`, a race condition occurs between the
   548  `devicemapper` and `udev` during create and cleanup. The race condition results
   549  in errors and failures. (For information on these failures, see
   550  [docker#4036](https://github.com/docker/docker/issues/4036))
   551  
   552  To allow the `docker` daemon to start, regardless of whether `udev` sync is
   553  `false`, set `dm.override_udev_sync_check` to true:
   554  
   555          $ dockerd --storage-opt dm.override_udev_sync_check=true
   556  
   557  When this value is `true`, the driver continues and simply warns you the errors
   558  are happening.
   559  
   560  **Note**: The ideal is to pursue a `docker` daemon and environment that does
   561  support synchronizing with `udev`. For further discussion on this topic, see
   562  [docker#4036](https://github.com/docker/docker/issues/4036).
   563  Otherwise, set this flag for migrating existing Docker daemons to a daemon with
   564  a supported environment.
   565  
   566  #### dm.min_free_space
   567  
   568  Specifies the min free space percent in a thin pool require for new device
   569  creation to succeed. This check applies to both free data space as well
   570  as free metadata space. Valid values are from 0% - 99%. Value 0% disables
   571  free space checking logic. If user does not specify a value for this option,
   572  the Engine uses a default value of 10%.
   573  
   574  Whenever a new a thin pool device is created (during `docker pull` or during
   575  container creation), the Engine checks if the minimum free space is available.
   576  If the space is unavailable, then device creation fails and any relevant
   577  `docker` operation fails.
   578  
   579  To recover from this error, you must create more free space in the thin pool to
   580  recover from the error. You can create free space by deleting some images and
   581  containers from tge thin pool. You can also add more storage to the thin pool.
   582  
   583  To add more space to an LVM (logical volume management) thin pool, just add
   584  more storage to the  group container thin pool; this should automatically
   585  resolve any errors. If your configuration uses loop devices, then stop the
   586  Engine daemon, grow the size of loop files and restart the daemon to resolve
   587  the issue.
   588  
   589  Example use:: `dockerd --storage-opt dm.min_free_space=10%`
   590  
   591  #### dm.xfs_nospace_max_retries
   592  
   593  Specifies the maximum number of retries XFS should attempt to complete IO when
   594  ENOSPC (no space) error is returned by underlying storage device.
   595  
   596  By default XFS retries infinitely for IO to finish and this can result in
   597  unkillable process. To change this behavior one can set xfs_nospace_max_retries
   598  to say 0 and XFS will not retry IO after getting ENOSPC and will shutdown
   599  filesystem.
   600  
   601  Example use:
   602  
   603      $ sudo dockerd --storage-opt dm.xfs_nospace_max_retries=0
   604  
   605  
   606  ## ZFS options
   607  
   608  #### zfs.fsname
   609  
   610  Set zfs filesystem under which docker will create its own datasets.  By default
   611  docker will pick up the zfs filesystem where docker graph (`/var/lib/docker`)
   612  is located.
   613  
   614  Example use: `dockerd -s zfs --storage-opt zfs.fsname=zroot/docker`
   615  
   616  ## Btrfs options
   617  
   618  #### btrfs.min_space
   619  
   620  Specifies the mininum size to use when creating the subvolume which is used for
   621  containers. If user uses disk quota for btrfs when creating or running a
   622  container with **--storage-opt size** option, docker should ensure the **size**
   623  cannot be smaller than **btrfs.min_space**.
   624  
   625  Example use: `docker daemon -s btrfs --storage-opt btrfs.min_space=10G`
   626  
   627  # CLUSTER STORE OPTIONS
   628  
   629  The daemon uses libkv to advertise the node within the cluster.  Some Key/Value
   630  backends support mutual TLS, and the client TLS settings used by the daemon can
   631  be configured using the **--cluster-store-opt** flag, specifying the paths to
   632  PEM encoded files.
   633  
   634  #### kv.cacertfile
   635  
   636  Specifies the path to a local file with PEM encoded CA certificates to trust
   637  
   638  #### kv.certfile
   639  
   640  Specifies the path to a local file with a PEM encoded certificate.  This
   641  certificate is used as the client cert for communication with the Key/Value
   642  store.
   643  
   644  #### kv.keyfile
   645  
   646  Specifies the path to a local file with a PEM encoded private key.  This
   647  private key is used as the client key for communication with the Key/Value
   648  store.
   649  
   650  # Access authorization
   651  
   652  Docker's access authorization can be extended by authorization plugins that
   653  your organization can purchase or build themselves. You can install one or more
   654  authorization plugins when you start the Docker `daemon` using the
   655  `--authorization-plugin=PLUGIN_ID` option.
   656  
   657  ```bash
   658  dockerd --authorization-plugin=plugin1 --authorization-plugin=plugin2,...
   659  ```
   660  
   661  The `PLUGIN_ID` value is either the plugin's name or a path to its
   662  specification file. The plugin's implementation determines whether you can
   663  specify a name or path. Consult with your Docker administrator to get
   664  information about the plugins available to you.
   665  
   666  Once a plugin is installed, requests made to the `daemon` through the command
   667  line or Docker's Engine API are allowed or denied by the plugin.  If you have
   668  multiple plugins installed, at least one must allow the request for it to
   669  complete.
   670  
   671  For information about how to create an authorization plugin, see [authorization
   672  plugin](https://docs.docker.com/engine/extend/authorization/) section in the
   673  Docker extend section of this documentation.
   674  
   675  
   676  # HISTORY
   677  Sept 2015, Originally compiled by Shishir Mahajan <shishir.mahajan@redhat.com>
   678  based on docker.com source material and internal work.