1DOCKER(8) SEPTEMBER 2015 DOCKER(8)
2
3
4
6 dockerd - Enable daemon mode
7
8
9
11 dockerd [--add-runtime[=[]]] [--allow-nondistributable-artifacts[=[]]]
12 [--api-cors-header=[=API-CORS-HEADER]] [--authorization-plugin[=[]]]
13 [-b|--bridge[=BRIDGE]] [--bip[=BIP]] [--cgroup-parent[=[]]]
14 [--cluster-store[=[]]] [--cluster-advertise[=[]]]
15 [--cluster-store-opt[=map[]]] [--config-file[=/etc/docker/daemon.json]]
16 [--containerd[=SOCKET-PATH]] [--data-root[=/var/lib/docker]]
17 [-D|--debug] [--default-gateway[=DEFAULT-GATEWAY]]
18 [--default-gateway-v6[=DEFAULT-GATEWAY-V6]]
19 [--default-address-pool[=DEFAULT-ADDRESS-POOL]]
20 [--default-runtime[=runc]] [--default-ipc-mode=MODE]
21 [--default-shm-size[=64MiB]] [--default-ulimit[=[]]] [--dns[=[]]]
22 [--dns-opt[=[]]] [--dns-search[=[]]] [--exec-opt[=[]]]
23 [--exec-root[=/var/run/docker]] [--experimental[=false]]
24 [--fixed-cidr[=FIXED-CIDR]] [--fixed-cidr-v6[=FIXED-CIDR-V6]]
25 [-G|--group[=docker]] [-H|--host[=[]]] [--help] [--icc[=true]]
26 [--init[=false]] [--init-path[=""]] [--insecure-registry[=[]]]
27 [--ip[=0.0.0.0]] [--ip-forward[=true]] [--ip-masq[=true]]
28 [--iptables[=true]] [--ipv6] [--isolation[=default]]
29 [-l|--log-level[=info]] [--label[=[]]] [--live-restore[=false]]
30 [--log-driver[=json-file]] [--log-opt[=map[]]] [--mtu[=0]]
31 [--max-concurrent-downloads[=3]] [--max-concurrent-uploads[=5]]
32 [--node-generic-resources[=[]]] [-p|--pidfile[=/var/run/docker.pid]]
33 [--raw-logs] [--registry-mirror[=[]]]
34 [-s|--storage-driver[=STORAGE-DRIVER]]
35 [--seccomp-profile[=SECCOMP-PROFILE-PATH]] [--selinux-enabled]
36 [--shutdown-timeout[=15]] [--storage-opt[=[]]]
37 [--swarm-default-advertise-addr[=IP|INTERFACE]] [--tls]
38 [--tlscacert[= /.docker/ca.pem]] [--tlscert[= /.docker/cert.pem]]
39 [--tlskey[= /.docker/key.pem]] [--tlsverify] [--userland-proxy[=true]]
40 [--userland-proxy-path[=""]] [--userns-remap[=default]]
41
42
43
45 dockerd is used for starting the Docker daemon (i.e., to command the
46 daemon to manage images, containers etc). So dockerd is a server, as a
47 daemon.
48
49
50 To run the Docker daemon you can specify dockerd. You can check the
51 daemon options using dockerd --help. Daemon options should be
52 specified after the dockerd keyword in the following format.
53
54
55 dockerd [OPTIONS]
56
57
58
60 --add-runtime=[]
61 Runtimes can be registered with the daemon either via the
62 configuration file or using the --add-runtime command line argument.
63
64
65 The following is an example adding 2 runtimes via the configuration:
66
67
68 {
69 "default-runtime": "runc",
70 "runtimes": {
71 "runc": {
72 "path": "runc"
73 },
74 "custom": {
75 "path": "/usr/local/bin/my-runc-replacement",
76 "runtimeArgs": [
77 "--debug"
78 ]
79 }
80 }
81 }
82
83
84
85 This is the same example via the command line:
86
87
88 $ sudo dockerd --add-runtime runc=runc --add-runtime custom=/usr/local/bin/my-runc-replacement
89
90
91
92 Note: defining runtime arguments via the command line is not supported.
93
94
95 --allow-nondistributable-artifacts=[]
96 Push nondistributable artifacts to the specified registries.
97
98
99 List can contain elements with CIDR notation to specify a whole subnet.
100
101
102 This option is useful when pushing images containing nondistributable
103 artifacts to a registry on an air-gapped network so hosts on that
104 network can
105 pull the images without connecting to another server.
106
107
108 Warning: Nondistributable artifacts typically have restrictions on how
109 and where they can be distributed and shared. Only use this feature
110 to push
111 artifacts to private registries and ensure that you are in compliance
112 with
113 any terms that cover redistributing nondistributable artifacts.
114
115
116 --api-cors-header=""
117 Set CORS headers in the Engine API. Default is cors disabled. Give
118 urls like
119 " ⟨http://foo⟩, ⟨http://bar⟩, ...". Give "*" to allow all.
120
121
122 --authorization-plugin=""
123 Set authorization plugins to load
124
125
126 -b, --bridge=""
127 Attach containers to a pre-existing network bridge; use 'none' to
128 disable
129 container networking
130
131
132 --bip=""
133 Use the provided CIDR notation address for the dynamically created
134 bridge
135 (docker0); Mutually exclusive of -b
136
137
138 --cgroup-parent=""
139 Set parent cgroup for all containers. Default is "/docker" for fs
140 cgroup
141 driver and "system.slice" for systemd cgroup driver.
142
143
144 --cluster-store=""
145 URL of the distributed storage backend
146
147
148 --cluster-advertise=""
149 Specifies the 'host:port' or interface:port combination that this
150 particular daemon instance should use when advertising itself to the
151 cluster.
152 The daemon is reached through this value.
153
154
155 --cluster-store-opt=""
156 Specifies options for the Key/Value store.
157
158
159 --config-file="/etc/docker/daemon.json"
160 Specifies the JSON file path to load the configuration from.
161
162
163 --containerd=""
164 Path to containerd socket.
165
166
167 --data-root=""
168 Path to the directory used to store persisted Docker data such as
169 configuration for resources, swarm cluster state, and filesystem data
170 for
171 images, containers, and local volumes. Default is /var/lib/docker.
172
173
174 -D, --debug=true|false
175 Enable debug mode. Default is false.
176
177
178 --default-gateway=""
179 IPv4 address of the container default gateway; this address must be
180 part of
181 the bridge subnet (which is defined by -b or --bip)
182
183
184 --default-gateway-v6=""
185 IPv6 address of the container default gateway
186
187
188 --default-address-pool=""
189 Default address pool from which IPAM driver selects a subnet for the
190 networks.
191 Example: base=172.30.0.0/16,size=24 will set the default
192 address pools for the selected scope networks to
193 {172.30.[0-255].0/24}
194
195
196 --default-runtime="runc"
197 Set default runtime if there're more than one specified by
198 --add-runtime.
199
200
201 --default-ipc-mode="private|shareable"
202 Set the default IPC mode for newly created containers. The argument
203 can either be private or shareable.
204
205
206 --default-shm-size=64MiB
207 Set the daemon-wide default shm size for containers. Default is
208 64MiB.
209
210
211 --default-ulimit=[]
212 Default ulimits for containers.
213
214
215 --dns=""
216 Force Docker to use specific DNS servers
217
218
219 --dns-opt=""
220 DNS options to use.
221
222
223 --dns-search=[]
224 DNS search domains to use.
225
226
227 --exec-opt=[]
228 Set runtime execution options. See RUNTIME EXECUTION OPTIONS.
229
230
231 --exec-root=""
232 Path to use as the root of the Docker execution state files. Default
233 is
234 /var/run/docker.
235
236
237 --experimental=""
238 Enable the daemon experimental features.
239
240
241 --fixed-cidr=""
242 IPv4 subnet for fixed IPs (e.g., 10.20.0.0/16); this subnet must be
243 nested in
244 the bridge subnet (which is defined by -b or --bip).
245
246
247 --fixed-cidr-v6=""
248 IPv6 subnet for global IPv6 addresses (e.g., 2a00:1450::/64)
249
250
251 -G, --group=""
252 Group to assign the unix socket specified by -H when running in
253 daemon mode.
254 use '' (the empty string) to disable setting of a group. Default is
255 docker.
256
257
258 -H, --host=[unix:///var/run/docker.sock]: tcp://[host:port] to bind or
259 unix://[/path/to/socket] to use.
260 The socket(s) to bind to in daemon mode specified using one or more
261 tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.
262
263
264 --help
265 Print usage statement
266
267
268 --icc=true|false
269 Allow unrestricted inter-container and Docker daemon host
270 communication. If
271 disabled, containers can still be linked together using the --link
272 option
273 (see docker-run(1)). Default is true.
274
275
276 --init
277 Run an init process inside containers for signal forwarding and
278 process
279 reaping.
280
281
282 --init-path
283 Path to the docker-init binary.
284
285
286 --insecure-registry=[]
287 Enable insecure registry communication, i.e., enable un-encrypted
288 and/or
289 untrusted communication.
290
291
292 List of insecure registries can contain an element with CIDR notation
293 to
294 specify a whole subnet. Insecure registries accept HTTP and/or accept
295 HTTPS
296 with certificates from unknown CAs.
297
298
299 Enabling --insecure-registry is useful when running a local registry.
300 However, because its use creates security vulnerabilities it should
301 ONLY be
302 enabled for testing purposes. For increased security, users should
303 add their
304 CA to their system's list of trusted CAs instead of using
305 --insecure-registry.
306
307
308 --ip=""
309 Default IP address to use when binding container ports. Default is
310 0.0.0.0.
311
312
313 --ip-forward=true|false
314 Enables IP forwarding on the Docker host. The default is true. This
315 flag
316 interacts with the IP forwarding setting on your host system's
317 kernel. If
318 your system has IP forwarding disabled, this setting enables it. If
319 your
320 system has IP forwarding enabled, setting this flag to
321 --ip-forward=false
322 has no effect.
323
324
325 This setting will also enable IPv6 forwarding if you have both
326 --ip-forward=true and --fixed-cidr-v6 set. Note that this may reject
327 Router Advertisements and interfere with the host's existing IPv6
328 configuration. For more information, please consult the documentation
329 about
330 "Advanced Networking - IPv6".
331
332
333 --ip-masq=true|false
334 Enable IP masquerading for bridge's IP range. Default is true.
335
336
337 --iptables=true|false
338 Enable Docker's addition of iptables rules. Default is true.
339
340
341 --ipv6=true|false
342 Enable IPv6 support. Default is false. Docker will create an
343 IPv6-enabled
344 bridge with address fe80::1 which will allow you to create
345 IPv6-enabled
346 containers. Use together with --fixed-cidr-v6 to provide globally
347 routable
348 IPv6 addresses. IPv6 forwarding will be enabled if not used with
349 --ip-forward=false. This may collide with your host's current IPv6
350 settings. For more information please consult the documentation about
351 "Advanced Networking - IPv6".
352
353
354 --isolation="default"
355 Isolation specifies the type of isolation technology used by
356 containers.
357 Note that the default on Windows server is process, and the default
358 on
359 Windows client is hyperv. Linux only supports default.
360
361
362 -l, --log-level="debug|info|warn|error|fatal"
363 Set the logging level. Default is info.
364
365
366 --label="[]"
367 Set key=value labels to the daemon (displayed in docker info)
368
369
370 --live-restore=false
371 Enable live restore of running containers when the daemon starts so
372 that they
373 are not restarted. This option is applicable only for docker daemon
374 running
375 on Linux host.
376
377
378 --log-driver="json-file|syslog|journald|gelf|fluentd|awslogs|splunk|etwlogs|gcplogs|none"
379 Default driver for container logs. Default is json-file.
380 Warning: docker logs command works only for json-file logging driver.
381
382
383 --log-opt=[]
384 Logging driver specific options.
385
386
387 --mtu=0
388 Set the containers network mtu. Default is 0.
389
390
391 --max-concurrent-downloads=3
392 Set the max concurrent downloads for each pull. Default is 3.
393
394
395 --max-concurrent-uploads=5
396 Set the max concurrent uploads for each push. Default is 5.
397
398
399 --node-generic-resources=[]
400 Advertise user-defined resource. Default is [].
401 Use this if your swarm cluster has some nodes with custom
402 resources (e.g: NVIDIA GPU, SSD, ...) and you need your services to
403 land on
404 nodes advertising these resources.
405 Usage example: --node-generic-resources "NVIDIA-GPU=UUID1"
406 --node-generic-resources "NVIDIA-GPU=UUID2"
407
408
409 -p, --pidfile=""
410 Path to use for daemon PID file. Default is /var/run/docker.pid
411
412
413 --raw-logs
414 Output daemon logs in full timestamp format without ANSI coloring. If
415 this
416 flag is not set, the daemon outputs condensed, colorized logs if a
417 terminal
418 is detected, or full ("raw") output otherwise.
419
420
421 --registry-mirror=<scheme>://<host>
422 Prepend a registry mirror to be used for image pulls. May be
423 specified
424 multiple times.
425
426
427 -s, --storage-driver=""
428 Force the Docker runtime to use a specific storage driver.
429
430
431 --seccomp-profile=""
432 Path to seccomp profile.
433
434
435 --selinux-enabled=true|false
436 Enable selinux support. Default is false.
437
438
439 --shutdown-timeout=15
440 Set the shutdown timeout value in seconds. Default is 15.
441
442
443 --storage-opt=[]
444 Set storage driver options. See STORAGE DRIVER OPTIONS.
445
446
447 --swarm-default-advertise-addr=IP|INTERFACE
448 Set default address or interface for swarm to advertise as its
449 externally-reachable address to other cluster members. This can be a
450 hostname, an IP address, or an interface such as eth0. A port cannot
451 be
452 specified with this option.
453
454
455 --tls=true|false
456 Use TLS; implied by --tlsverify. Default is false.
457
458
459 --tlscacert= /.docker/ca.pem
460 Trust certs signed only by this CA.
461
462
463 --tlscert= /.docker/cert.pem
464 Path to TLS certificate file.
465
466
467 --tlskey= /.docker/key.pem
468 Path to TLS key file.
469
470
471 --tlsverify=true|false
472 Use TLS and verify the remote (daemon: verify client, client: verify
473 daemon).
474 Default is false.
475
476
477 --userland-proxy=true|false
478 Rely on a userland proxy implementation for inter-container and
479 outside-to-container loopback communications. Default is true.
480
481
482 --userland-proxy-path=""
483 Path to the userland proxy binary.
484
485
486 --userns-remap=default|uid:gid|user:group|user|uid
487 Enable user namespaces for containers on the daemon. Specifying
488 "default"
489 will cause a new user and group to be created to handle UID and GID
490 range
491 remapping for the user namespace mappings used for contained
492 processes.
493 Specifying a user (or uid) and optionally a group (or gid) will cause
494 the
495 daemon to lookup the user and group's subordinate ID ranges for use
496 as the
497 user namespace mappings for contained processes.
498
499
500
502 Docker uses storage backends (known as "graphdrivers" in the Docker
503 internals) to create writable containers from images. Many of these
504 backends use operating system level technologies and can be configured.
505
506
507 Specify options to the storage backend with --storage-opt flags. The
508 backends that currently take options are devicemapper, zfs and btrfs.
509 Options for devicemapper are prefixed with dm, options for zfs start
510 with zfs and options for btrfs start with btrfs.
511
512
513 Specifically for devicemapper, the default is a "loopback" model which
514 requires no pre-configuration, but is extremely inefficient. Do not
515 use it in production.
516
517
518 To make the best use of Docker with the devicemapper backend, you must
519 have a recent version of LVM. Use lvm to create a thin pool; for more
520 information see man lvmthin. Then, use --storage-opt dm.thinpooldev to
521 tell the Docker engine to use that pool for allocating images and
522 container snapshots.
523
524
526 dm.thinpooldev
527 Specifies a custom block storage device to use for the thin pool.
528
529
530 If using a block device for device mapper storage, it is best to use
531 lvm to create and manage the thin-pool volume. This volume is then
532 handed to Docker to exclusively create snapshot volumes needed for
533 images and containers.
534
535
536 Managing the thin-pool outside of Engine makes for the most
537 feature-rich method of having Docker utilize device mapper thin
538 provisioning as the backing storage for Docker containers. The
539 highlights of the lvm-based thin-pool management feature include:
540 automatic or interactive thin-pool resize support, dynamically changing
541 thin-pool features, automatic thinp metadata checking when lvm
542 activates the thin-pool, etc.
543
544
545 As a fallback if no thin pool is provided, loopback files are created.
546 Loopback is very slow, but can be used without any pre-configuration of
547 storage. It is strongly recommended that you do not use loopback in
548 production. Ensure your Engine daemon has a --storage-opt
549 dm.thinpooldev argument provided.
550
551
552 Example use:
553
554
555 $ dockerd \
556 --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
557
558
559 dm.directlvm_device
560 As an alternative to manually creating a thin pool as above, Docker can
561 automatically configure a block device for you.
562
563
564 Example use:
565
566
567 $ dockerd \
568 --storage-opt dm.directlvm_device=/dev/xvdf
569
570
571 dm.thinp_percent
572 Sets the percentage of passed in block device to use for storage.
573
574
575 Example:
576 $ sudo dockerd \
577 --storage-opt dm.thinp_percent=95
578
579
580 dm.thinp_metapercent
581 Sets the percentage of the passed in block device to use for metadata
582 storage.
583
584
585 Example:
586 $ sudo dockerd \
587 --storage-opt dm.thinp_metapercent=1
588
589
590 dm.thinp_autoextend_threshold
591 Sets the value of the percentage of space used before lvm attempts to
592 autoextend the available space [100 = disabled]
593
594
595 Example:
596 $ sudo dockerd \
597 --storage-opt dm.thinp_autoextend_threshold=80
598
599
600 dm.thinp_autoextend_percent
601 Sets the value percentage value to increase the thin pool by when lvm
602 attempts to autoextend the available space [100 = disabled]
603
604
605 Example:
606 $ sudo dockerd \
607 --storage-opt dm.thinp_autoextend_percent=20
608
609
610 dm.basesize
611 Specifies the size to use when creating the base device, which limits
612 the size of images and containers. The default value is 10G. Note, thin
613 devices are inherently "sparse", so a 10G device which is mostly empty
614 doesn't use 10 GB of space on the pool. However, the filesystem will
615 use more space for base images the larger the device is.
616
617
618 The base device size can be increased at daemon restart which will
619 allow all future images and containers (based on those new images) to
620 be of the new base device size.
621
622
623 Example use: dockerd --storage-opt dm.basesize=50G
624
625
626 This will increase the base device size to 50G. The Docker daemon will
627 throw an error if existing base device size is larger than 50G. A user
628 can use this option to expand the base device size however shrinking is
629 not permitted.
630
631
632 This value affects the system-wide "base" empty filesystem that may
633 already be initialized and inherited by pulled images. Typically, a
634 change to this value requires additional steps to take effect:
635
636
637 $ sudo service docker stop
638 $ sudo rm -rf /var/lib/docker
639 $ sudo service docker start
640
641
642
643 Example use: dockerd --storage-opt dm.basesize=20G
644
645
646 dm.fs
647 Specifies the filesystem type to use for the base device. The supported
648 options are ext4 and xfs. The default is ext4.
649
650
651 Example use: dockerd --storage-opt dm.fs=xfs
652
653
654 dm.mkfsarg
655 Specifies extra mkfs arguments to be used when creating the base
656 device.
657
658
659 Example use: dockerd --storage-opt "dm.mkfsarg=-O ^has_journal"
660
661
662 dm.mountopt
663 Specifies extra mount options used when mounting the thin devices.
664
665
666 Example use: dockerd --storage-opt dm.mountopt=nodiscard
667
668
669 dm.use_deferred_removal
670 Enables use of deferred device removal if libdm and the kernel driver
671 support the mechanism.
672
673
674 Deferred device removal means that if device is busy when devices are
675 being removed/deactivated, then a deferred removal is scheduled on
676 device. And devices automatically go away when last user of the device
677 exits.
678
679
680 For example, when a container exits, its associated thin device is
681 removed. If that device has leaked into some other mount namespace and
682 can't be removed, the container exit still succeeds and this option
683 causes the system to schedule the device for deferred removal. It does
684 not wait in a loop trying to remove a busy device.
685
686
687 Example use: dockerd --storage-opt dm.use_deferred_removal=true
688
689
690 dm.use_deferred_deletion
691 Enables use of deferred device deletion for thin pool devices. By
692 default, thin pool device deletion is synchronous. Before a container
693 is deleted, the Docker daemon removes any associated devices. If the
694 storage driver can not remove a device, the container deletion fails
695 and daemon returns.
696
697
698 Error deleting container: Error response from daemon: Cannot destroy
699 container
700
701
702 To avoid this failure, enable both deferred device deletion and
703 deferred device removal on the daemon.
704
705
706 dockerd --storage-opt dm.use_deferred_deletion=true --storage-opt
707 dm.use_deferred_removal=true
708
709
710 With these two options enabled, if a device is busy when the driver is
711 deleting a container, the driver marks the device as deleted. Later,
712 when the device isn't in use, the driver deletes it.
713
714
715 In general it should be safe to enable this option by default. It will
716 help when unintentional leaking of mount point happens across multiple
717 mount namespaces.
718
719
720 dm.loopdatasize
721 Note: This option configures devicemapper loopback, which should not be
722 used in production.
723
724
725 Specifies the size to use when creating the loopback file for the
726 "data" device which is used for the thin pool. The default size is
727 100G. The file is sparse, so it will not initially take up this much
728 space.
729
730
731 Example use: dockerd --storage-opt dm.loopdatasize=200G
732
733
734 dm.loopmetadatasize
735 Note: This option configures devicemapper loopback, which should not be
736 used in production.
737
738
739 Specifies the size to use when creating the loopback file for the
740 "metadata" device which is used for the thin pool. The default size is
741 2G. The file is sparse, so it will not initially take up this much
742 space.
743
744
745 Example use: dockerd --storage-opt dm.loopmetadatasize=4G
746
747
748 dm.datadev
749 (Deprecated, use dm.thinpooldev)
750
751
752 Specifies a custom blockdevice to use for data for a Docker-managed
753 thin pool. It is better to use dm.thinpooldev - see the documentation
754 for it above for discussion of the advantages.
755
756
757 dm.metadatadev
758 (Deprecated, use dm.thinpooldev)
759
760
761 Specifies a custom blockdevice to use for metadata for a Docker-managed
762 thin pool. See dm.datadev for why this is deprecated.
763
764
765 dm.blocksize
766 Specifies a custom blocksize to use for the thin pool. The default
767 blocksize is 64K.
768
769
770 Example use: dockerd --storage-opt dm.blocksize=512K
771
772
773 dm.blkdiscard
774 Enables or disables the use of blkdiscard when removing devicemapper
775 devices. This is disabled by default due to the additional latency,
776 but as a special case with loopback devices it will be enabled, in
777 order to re-sparsify the loopback file on image/container removal.
778
779
780 Disabling this on loopback can lead to much faster container removal
781 times, but it also prevents the space used in /var/lib/docker directory
782 from being returned to the system for other use when containers are
783 removed.
784
785
786 Example use: dockerd --storage-opt dm.blkdiscard=false
787
788
789 dm.override_udev_sync_check
790 By default, the devicemapper backend attempts to synchronize with the
791 udev device manager for the Linux kernel. This option allows disabling
792 that synchronization, to continue even though the configuration may be
793 buggy.
794
795
796 To view the udev sync support of a Docker daemon that is using the
797 devicemapper driver, run:
798
799
800 $ docker info
801 [...]
802 Udev Sync Supported: true
803 [...]
804
805
806
807 When udev sync support is true, then devicemapper and udev can
808 coordinate the activation and deactivation of devices for containers.
809
810
811 When udev sync support is false, a race condition occurs between the
812 devicemapper and udev during create and cleanup. The race condition
813 results in errors and failures. (For information on these failures, see
814 docker#4036 ⟨https://github.com/docker/docker/issues/4036⟩)
815
816
817 To allow the docker daemon to start, regardless of whether udev sync is
818 false, set dm.override_udev_sync_check to true:
819
820
821 $ dockerd --storage-opt dm.override_udev_sync_check=true
822
823
824
825 When this value is true, the driver continues and simply warns you the
826 errors are happening.
827
828
829 Note: The ideal is to pursue a docker daemon and environment that does
830 support synchronizing with udev. For further discussion on this topic,
831 see docker#4036 ⟨https://github.com/docker/docker/issues/4036⟩.
832 Otherwise, set this flag for migrating existing Docker daemons to a
833 daemon with a supported environment.
834
835
836 dm.min_free_space
837 Specifies the min free space percent in a thin pool require for new
838 device creation to succeed. This check applies to both free data space
839 as well as free metadata space. Valid values are from 0% - 99%. Value
840 0% disables free space checking logic. If user does not specify a value
841 for this option, the Engine uses a default value of 10%.
842
843
844 Whenever a new a thin pool device is created (during docker pull or
845 during container creation), the Engine checks if the minimum free space
846 is available. If the space is unavailable, then device creation fails
847 and any relevant docker operation fails.
848
849
850 To recover from this error, you must create more free space in the thin
851 pool to recover from the error. You can create free space by deleting
852 some images and containers from tge thin pool. You can also add more
853 storage to the thin pool.
854
855
856 To add more space to an LVM (logical volume management) thin pool, just
857 add more storage to the group container thin pool; this should
858 automatically resolve any errors. If your configuration uses loop
859 devices, then stop the Engine daemon, grow the size of loop files and
860 restart the daemon to resolve the issue.
861
862
863 Example use:: dockerd --storage-opt dm.min_free_space=10%
864
865
866 dm.xfs_nospace_max_retries
867 Specifies the maximum number of retries XFS should attempt to complete
868 IO when ENOSPC (no space) error is returned by underlying storage
869 device.
870
871
872 By default XFS retries infinitely for IO to finish and this can result
873 in unkillable process. To change this behavior one can set
874 xfs_nospace_max_retries to say 0 and XFS will not retry IO after
875 getting ENOSPC and will shutdown filesystem.
876
877
878 Example use:
879
880
881 $ sudo dockerd --storage-opt dm.xfs_nospace_max_retries=0
882
883
884
885 dm.libdm_log_level
886 Specifies the maxmimum libdm log level that will be forwarded to the
887 dockerd log (as specified by --log-level). This option is primarily
888 intended for debugging problems involving libdm. Using values other
889 than the defaults may cause false-positive warnings to be logged.
890
891
892 Values specified must fall within the range of valid libdm log levels.
893 At the time of writing, the following is the list of libdm log levels
894 as well as their corresponding levels when output by dockerd.
895
896
897 ┌────────────┬───────┬─────────────┐
898 │libdm Level │ Value │ --log-level │
899 ├────────────┼───────┼─────────────┤
900 │_LOG_FATAL │ 2 │ error │
901 ├────────────┼───────┼─────────────┤
902 │_LOG_ERR │ 3 │ error │
903 ├────────────┼───────┼─────────────┤
904 │_LOG_WARN │ 4 │ warn │
905 ├────────────┼───────┼─────────────┤
906 │_LOG_NOTICE │ 5 │ info │
907 ├────────────┼───────┼─────────────┤
908 │_LOG_INFO │ 6 │ info │
909 ├────────────┼───────┼─────────────┤
910 │_LOG_DEBUG │ 7 │ debug │
911 └────────────┴───────┴─────────────┘
912
913 Example use:
914
915
916 $ sudo dockerd \
917 --log-level debug \
918 --storage-opt dm.libdm_log_level=7
919
920
921
923 zfs.fsname
924 Set zfs filesystem under which docker will create its own datasets. By
925 default docker will pick up the zfs filesystem where docker graph
926 (/var/lib/docker) is located.
927
928
929 Example use: dockerd -s zfs --storage-opt zfs.fsname=zroot/docker
930
931
933 btrfs.min_space
934 Specifies the minimum size to use when creating the subvolume which is
935 used for containers. If user uses disk quota for btrfs when creating or
936 running a container with --storage-opt size option, docker should
937 ensure the size cannot be smaller than btrfs.min_space.
938
939
940 Example use: docker daemon -s btrfs --storage-opt btrfs.min_space=10G
941
942
943
945 The daemon uses libkv to advertise the node within the cluster. Some
946 Key/Value backends support mutual TLS, and the client TLS settings used
947 by the daemon can be configured using the --cluster-store-opt flag,
948 specifying the paths to PEM encoded files.
949
950
951 kv.cacertfile
952 Specifies the path to a local file with PEM encoded CA certificates to
953 trust
954
955
956 kv.certfile
957 Specifies the path to a local file with a PEM encoded certificate.
958 This certificate is used as the client cert for communication with the
959 Key/Value store.
960
961
962 kv.keyfile
963 Specifies the path to a local file with a PEM encoded private key.
964 This private key is used as the client key for communication with the
965 Key/Value store.
966
967
968
970 Docker's access authorization can be extended by authorization plugins
971 that your organization can purchase or build themselves. You can
972 install one or more authorization plugins when you start the Docker
973 daemon using the --authorization-plugin=PLUGIN_ID option.
974
975
976 dockerd --authorization-plugin=plugin1 --authorization-plugin=plugin2,...
977
978
979
980 The PLUGIN_ID value is either the plugin's name or a path to its
981 specification file. The plugin's implementation determines whether you
982 can specify a name or path. Consult with your Docker administrator to
983 get information about the plugins available to you.
984
985
986 Once a plugin is installed, requests made to the daemon through the
987 command line or Docker's Engine API are allowed or denied by the
988 plugin. If you have multiple plugins installed, each plugin, in order,
989 must allow the request for it to complete.
990
991
992 For information about how to create an authorization plugin, see access
993 authorization plugin
994 ⟨https://docs.docker.com/engine/extend/plugins_authorization/⟩ section
995 in the Docker extend section of this documentation.
996
997
998
1000 You can configure the runtime using options specified with the
1001 --exec-opt flag. All the flag's options have the native prefix. A
1002 single native.cgroupdriver option is available.
1003
1004
1005 The native.cgroupdriver option specifies the management of the
1006 container's cgroups. You can only specify cgroupfs or systemd. If you
1007 specify systemd and it is not available, the system errors out. If you
1008 omit the native.cgroupdriver option,cgroupfs is used.
1009
1010
1011 This example sets the cgroupdriver to systemd:
1012
1013
1014 $ sudo dockerd --exec-opt native.cgroupdriver=systemd
1015
1016
1017
1018 Setting this option applies to all containers the daemon launches.
1019
1020
1021
1023 Sept 2015, Originally compiled by Shishir Mahajan
1024 ⟨shishir.mahajan@redhat.com⟩ based on docker.com source material and
1025 internal work.
1026
1027
1028
1029Shishir Mahajan Docker User Manuals DOCKER(8)