github.com/kunnos/engine@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.