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