Browse code

Merge pull request #22386 from wenchma/dockerd

Update the `docker daemon` to `dockerd` for document

Vincent Demeester authored on 2016/05/04 22:07:53
Showing 20 changed files
... ...
@@ -22,10 +22,10 @@ or `systemd` to manage the `docker` daemon's start and stop.
22 22
 
23 23
 ### Running the docker daemon directly
24 24
 
25
-The `docker` daemon can be run directly using the `docker daemon` command. By default it listens on
25
+The `docker` daemon can be run directly using the `dockerd` command. By default it listens on
26 26
 the Unix socket `unix:///var/run/docker.sock`
27 27
 
28
-    $ docker daemon
28
+    $ dockerd
29 29
 
30 30
     INFO[0000] +job init_networkdriver()
31 31
     INFO[0000] +job serveapi(unix:///var/run/docker.sock)
... ...
@@ -50,7 +50,7 @@ Some of the daemon's options are:
50 50
 
51 51
 Here is a an example of running the `docker` daemon with configuration options:
52 52
 
53
-    $ docker daemon -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
53
+    $ dockerd -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
54 54
 
55 55
 These options :
56 56
 
... ...
@@ -58,7 +58,7 @@ These options :
58 58
 - Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
59 59
 - Listen for connections on `tcp://192.168.59.3:2376`
60 60
 
61
-The command line reference has the [complete list of daemon flags](../reference/commandline/daemon.md)
61
+The command line reference has the [complete list of daemon flags](../reference/commandline/dockerd.md)
62 62
 with explanations.
63 63
 
64 64
 ### Daemon debugging
... ...
@@ -137,7 +137,7 @@ These options :
137 137
 - Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
138 138
 - Listen for connections on `tcp://192.168.59.3:2376`
139 139
 
140
-The command line reference has the [complete list of daemon flags](../reference/commandline/daemon.md)
140
+The command line reference has the [complete list of daemon flags](../reference/commandline/dockerd.md)
141 141
 with explanations.
142 142
 
143 143
 
... ...
@@ -228,7 +228,7 @@ an empty configuration followed by a new one as follows:
228 228
 ```
229 229
 [Service]
230 230
 ExecStart=
231
-ExecStart=/usr/bin/docker daemon -H fd:// -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
231
+ExecStart=/usr/bin/dockerd -H fd:// -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
232 232
 ```
233 233
 
234 234
 These options :
... ...
@@ -237,7 +237,7 @@ These options :
237 237
 - Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
238 238
 - Listen for connections on `tcp://192.168.59.3:2376`
239 239
 
240
-The command line reference has the [complete list of daemon flags](../reference/commandline/daemon.md)
240
+The command line reference has the [complete list of daemon flags](../reference/commandline/dockerd.md)
241 241
 with explanations.
242 242
 
243 243
 6. Save and close the file.
... ...
@@ -163,7 +163,7 @@ these scripts in the <a href="https://github.com/docker/docker/tree/master/contr
163 163
 contrib directory</a>.
164 164
 
165 165
 For additional information about running the Engine in daemon mode, refer to
166
-the [daemon command](../reference/commandline/daemon.md) in the Engine command
166
+the [daemon command](../reference/commandline/dockerd.md) in the Engine command
167 167
 line reference.
168 168
 
169 169
 ### Get the Mac OS X binary
... ...
@@ -116,7 +116,7 @@ when no `-H` was passed in.
116 116
 
117 117
 Run Docker in daemon mode:
118 118
 
119
-    $ sudo <path to>/docker daemon -H 0.0.0.0:5555 &
119
+    $ sudo <path to>/dockerd -H 0.0.0.0:5555 &
120 120
 
121 121
 Download an `ubuntu` image:
122 122
 
... ...
@@ -126,7 +126,7 @@ You can use multiple `-H`, for example, if you want to listen on both
126 126
 TCP and a Unix socket
127 127
 
128 128
     # Run docker in daemon mode
129
-    $ sudo <path to>/docker daemon -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock &
129
+    $ sudo <path to>/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock &
130 130
     # Download an ubuntu image, use default Unix socket
131 131
     $ docker pull ubuntu
132 132
     # OR use the TCP port
... ...
@@ -3357,4 +3357,4 @@ To set cross origin requests to the remote api please give values to
3357 3357
 `--api-cors-header` when running Docker in daemon mode. Set * (asterisk) allows all,
3358 3358
 default or blank means CORS disabled
3359 3359
 
3360
-    $ docker daemon -H="192.168.1.9:2375" --api-cors-header="http://foo.bar"
3360
+    $ dockerd -H="192.168.1.9:2375" --api-cors-header="http://foo.bar"
3361 3361
deleted file mode 100644
... ...
@@ -1,958 +0,0 @@
1
-<!--[metadata]>
2
-+++
3
-title = "daemon"
4
-description = "The daemon command description and usage"
5
-keywords = ["container, daemon, runtime"]
6
-[menu.main]
7
-parent = "smn_cli"
8
-weight = -1
9
-+++
10
-<![end-metadata]-->
11
-
12
-# daemon
13
-
14
-    Usage: docker daemon [OPTIONS]
15
-
16
-    A self-sufficient runtime for linux containers.
17
-
18
-    Options:
19
-      --api-cors-header=""                   Set CORS headers in the remote API
20
-      --authorization-plugin=[]              Set authorization plugins to load
21
-      -b, --bridge=""                        Attach containers to a network bridge
22
-      --bip=""                               Specify network bridge IP
23
-      --cgroup-parent=                       Set parent cgroup for all containers
24
-      --cluster-store=""                     URL of the distributed storage backend
25
-      --cluster-advertise=""                 Address of the daemon instance on the cluster
26
-      --cluster-store-opt=map[]              Set cluster options
27
-      --config-file=/etc/docker/daemon.json  Daemon configuration file
28
-      --containerd                           Path to containerd socket
29
-      -D, --debug                            Enable debug mode
30
-      --default-gateway=""                   Container default gateway IPv4 address
31
-      --default-gateway-v6=""                Container default gateway IPv6 address
32
-      --dns=[]                               DNS server to use
33
-      --dns-opt=[]                           DNS options to use
34
-      --dns-search=[]                        DNS search domains to use
35
-      --default-ulimit=[]                    Set default ulimit settings for containers
36
-      --exec-opt=[]                          Set runtime execution options
37
-      --exec-root="/var/run/docker"          Root directory for execution state files
38
-      --fixed-cidr=""                        IPv4 subnet for fixed IPs
39
-      --fixed-cidr-v6=""                     IPv6 subnet for fixed IPs
40
-      -G, --group="docker"                   Group for the unix socket
41
-      -g, --graph="/var/lib/docker"          Root of the Docker runtime
42
-      -H, --host=[]                          Daemon socket(s) to connect to
43
-      --help                                 Print usage
44
-      --icc=true                             Enable inter-container communication
45
-      --insecure-registry=[]                 Enable insecure registry communication
46
-      --ip=0.0.0.0                           Default IP when binding container ports
47
-      --ip-forward=true                      Enable net.ipv4.ip_forward
48
-      --ip-masq=true                         Enable IP masquerading
49
-      --iptables=true                        Enable addition of iptables rules
50
-      --ipv6                                 Enable IPv6 networking
51
-      -l, --log-level="info"                 Set the logging level
52
-      --label=[]                             Set key=value labels to the daemon
53
-      --log-driver="json-file"               Default driver for container logs
54
-      --log-opt=[]                           Log driver specific options
55
-      --mtu=0                                Set the containers network MTU
56
-      --disable-legacy-registry              Do not contact legacy registries
57
-      -p, --pidfile="/var/run/docker.pid"    Path to use for daemon PID file
58
-      --raw-logs                             Full timestamps without ANSI coloring
59
-      --registry-mirror=[]                   Preferred Docker registry mirror
60
-      -s, --storage-driver=""                Storage driver to use
61
-      --selinux-enabled                      Enable selinux support
62
-      --storage-opt=[]                       Set storage driver options
63
-      --tls                                  Use TLS; implied by --tlsverify
64
-      --tlscacert="~/.docker/ca.pem"         Trust certs signed only by this CA
65
-      --tlscert="~/.docker/cert.pem"         Path to TLS certificate file
66
-      --tlskey="~/.docker/key.pem"           Path to TLS key file
67
-      --tlsverify                            Use TLS and verify the remote
68
-      --userns-remap="default"               Enable user namespace remapping
69
-      --userland-proxy=true                  Use userland proxy for loopback traffic
70
-
71
-Options with [] may be specified multiple times.
72
-
73
-The Docker daemon is the persistent process that manages containers. Docker
74
-uses the same binary for both the daemon and client. To run the daemon you
75
-type `docker daemon`.
76
-
77
-To run the daemon with debug output, use `docker daemon -D`.
78
-
79
-## Daemon socket option
80
-
81
-The Docker daemon can listen for [Docker Remote API](../api/docker_remote_api.md)
82
-requests via three different types of Socket: `unix`, `tcp`, and `fd`.
83
-
84
-By default, a `unix` domain socket (or IPC socket) is created at
85
-`/var/run/docker.sock`, requiring either `root` permission, or `docker` group
86
-membership.
87
-
88
-If you need to access the Docker daemon remotely, you need to enable the `tcp`
89
-Socket. Beware that the default setup provides un-encrypted and
90
-un-authenticated direct access to the Docker daemon - and should be secured
91
-either using the [built in HTTPS encrypted socket](../../security/https/), or by
92
-putting a secure web proxy in front of it. You can listen on port `2375` on all
93
-network interfaces with `-H tcp://0.0.0.0:2375`, or on a particular network
94
-interface using its IP address: `-H tcp://192.168.59.103:2375`. It is
95
-conventional to use port `2375` for un-encrypted, and port `2376` for encrypted
96
-communication with the daemon.
97
-
98
-> **Note:**
99
-> If you're using an HTTPS encrypted socket, keep in mind that only
100
-> TLS1.0 and greater are supported. Protocols SSLv3 and under are not
101
-> supported anymore for security reasons.
102
-
103
-On Systemd based systems, you can communicate with the daemon via
104
-[Systemd socket activation](http://0pointer.de/blog/projects/socket-activation.html),
105
-use `docker daemon -H fd://`. Using `fd://` will work perfectly for most setups but
106
-you can also specify individual sockets: `docker daemon -H fd://3`. If the
107
-specified socket activated files aren't found, then Docker will exit. You can
108
-find examples of using Systemd socket activation with Docker and Systemd in the
109
-[Docker source tree](https://github.com/docker/docker/tree/master/contrib/init/systemd/).
110
-
111
-You can configure the Docker daemon to listen to multiple sockets at the same
112
-time using multiple `-H` options:
113
-
114
-    # listen using the default unix socket, and on 2 specific IP addresses on this host.
115
-    docker daemon -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2
116
-
117
-The Docker client will honor the `DOCKER_HOST` environment variable to set the
118
-`-H` flag for the client.
119
-
120
-    $ docker -H tcp://0.0.0.0:2375 ps
121
-    # or
122
-    $ export DOCKER_HOST="tcp://0.0.0.0:2375"
123
-    $ docker ps
124
-    # both are equal
125
-
126
-Setting the `DOCKER_TLS_VERIFY` environment variable to any value other than
127
-the empty string is equivalent to setting the `--tlsverify` flag. The following
128
-are equivalent:
129
-
130
-    $ docker --tlsverify ps
131
-    # or
132
-    $ export DOCKER_TLS_VERIFY=1
133
-    $ docker ps
134
-
135
-The Docker client will honor the `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY`
136
-environment variables (or the lowercase versions thereof). `HTTPS_PROXY` takes
137
-precedence over `HTTP_PROXY`.
138
-
139
-### Daemon storage-driver option
140
-
141
-The Docker daemon has support for several different image layer storage
142
-drivers: `aufs`, `devicemapper`, `btrfs`, `zfs` and `overlay`.
143
-
144
-The `aufs` driver is the oldest, but is based on a Linux kernel patch-set that
145
-is unlikely to be merged into the main kernel. These are also known to cause
146
-some serious kernel crashes. However, `aufs` is also the only storage driver
147
-that allows containers to share executable and shared library memory, so is a
148
-useful choice when running thousands of containers with the same program or
149
-libraries.
150
-
151
-The `devicemapper` driver uses thin provisioning and Copy on Write (CoW)
152
-snapshots. For each devicemapper graph location – typically
153
-`/var/lib/docker/devicemapper` – a thin pool is created based on two block
154
-devices, one for data and one for metadata. By default, these block devices
155
-are created automatically by using loopback mounts of automatically created
156
-sparse files. Refer to [Storage driver options](#storage-driver-options) below
157
-for a way how to customize this setup.
158
-[~jpetazzo/Resizing Docker containers with the Device Mapper plugin](http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/)
159
-article explains how to tune your existing setup without the use of options.
160
-
161
-The `btrfs` driver is very fast for `docker build` - but like `devicemapper`
162
-does not share executable memory between devices. Use
163
-`docker daemon -s btrfs -g /mnt/btrfs_partition`.
164
-
165
-The `zfs` driver is probably not as fast as `btrfs` but has a longer track record
166
-on stability. Thanks to `Single Copy ARC` shared blocks between clones will be
167
-cached only once. Use `docker daemon -s zfs`. To select a different zfs filesystem
168
-set `zfs.fsname` option as described in [Storage driver options](#storage-driver-options).
169
-
170
-The `overlay` is a very fast union filesystem. It is now merged in the main
171
-Linux kernel as of [3.18.0](https://lkml.org/lkml/2014/10/26/137). Call
172
-`docker daemon -s overlay` to use it.
173
-
174
-> **Note:**
175
-> As promising as `overlay` is, the feature is still quite young and should not
176
-> be used in production. Most notably, using `overlay` can cause excessive
177
-> inode consumption (especially as the number of images grows), as well as
178
-> being incompatible with the use of RPMs.
179
-
180
-> **Note:**
181
-> It is currently unsupported on `btrfs` or any Copy on Write filesystem
182
-> and should only be used over `ext4` partitions.
183
-
184
-### Storage driver options
185
-
186
-Particular storage-driver can be configured with options specified with
187
-`--storage-opt` flags. Options for `devicemapper` are prefixed with `dm` and
188
-options for `zfs` start with `zfs`.
189
-
190
-*  `dm.thinpooldev`
191
-
192
-     Specifies a custom block storage device to use for the thin pool.
193
-
194
-     If using a block device for device mapper storage, it is best to use `lvm`
195
-     to create and manage the thin-pool volume. This volume is then handed to Docker
196
-     to exclusively create snapshot volumes needed for images and containers.
197
-
198
-     Managing the thin-pool outside of Engine makes for the most feature-rich
199
-     method of having Docker utilize device mapper thin provisioning as the
200
-     backing storage for Docker containers. The highlights of the lvm-based
201
-     thin-pool management feature include: automatic or interactive thin-pool
202
-     resize support, dynamically changing thin-pool features, automatic thinp
203
-     metadata checking when lvm activates the thin-pool, etc.
204
-
205
-     As a fallback if no thin pool is provided, loopback files are
206
-     created. Loopback is very slow, but can be used without any
207
-     pre-configuration of storage. It is strongly recommended that you do
208
-     not use loopback in production. Ensure your Engine daemon has a
209
-     `--storage-opt dm.thinpooldev` argument provided.
210
-
211
-     Example use:
212
-
213
-        $ docker daemon \
214
-              --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
215
-
216
-*  `dm.basesize`
217
-
218
-    Specifies the size to use when creating the base device, which limits the
219
-    size of images and containers. The default value is 10G. Note, thin devices
220
-    are inherently "sparse", so a 10G device which is mostly empty doesn't use
221
-    10 GB of space on the pool. However, the filesystem will use more space for
222
-    the empty case the larger the device is.
223
-
224
-    The base device size can be increased at daemon restart which will allow
225
-    all future images and containers (based on those new images) to be of the
226
-    new base device size.
227
-
228
-    Example use:
229
-
230
-        $ docker daemon --storage-opt dm.basesize=50G
231
-
232
-    This will increase the base device size to 50G. The Docker daemon will throw an
233
-    error if existing base device size is larger than 50G. A user can use
234
-    this option to expand the base device size however shrinking is not permitted.
235
-
236
-    This value affects the system-wide "base" empty filesystem
237
-    that may already be initialized and inherited by pulled images. Typically,
238
-    a change to this value requires additional steps to take effect:
239
-
240
-        $ sudo service docker stop
241
-        $ sudo rm -rf /var/lib/docker
242
-        $ sudo service docker start
243
-
244
-    Example use:
245
-
246
-        $ docker daemon --storage-opt dm.basesize=20G
247
-
248
-*  `dm.loopdatasize`
249
-
250
-    > **Note**:
251
-	> This option configures devicemapper loopback, which should not
252
-	> be used in production.
253
-
254
-    Specifies the size to use when creating the loopback file for the
255
-    "data" device which is used for the thin pool. The default size is
256
-    100G. The file is sparse, so it will not initially take up this
257
-    much space.
258
-
259
-    Example use:
260
-
261
-        $ docker daemon --storage-opt dm.loopdatasize=200G
262
-
263
-*  `dm.loopmetadatasize`
264
-
265
-    > **Note**:
266
-    > This option configures devicemapper loopback, which should not
267
-    > be used in production.
268
-
269
-    Specifies the size to use when creating the loopback file for the
270
-    "metadata" device which is used for the thin pool. The default size
271
-    is 2G. The file is sparse, so it will not initially take up
272
-    this much space.
273
-
274
-    Example use:
275
-
276
-        $ docker daemon --storage-opt dm.loopmetadatasize=4G
277
-
278
-*  `dm.fs`
279
-
280
-    Specifies the filesystem type to use for the base device. The supported
281
-    options are "ext4" and "xfs". The default is "xfs"
282
-
283
-    Example use:
284
-
285
-        $ docker daemon --storage-opt dm.fs=ext4
286
-
287
-*  `dm.mkfsarg`
288
-
289
-    Specifies extra mkfs arguments to be used when creating the base device.
290
-
291
-    Example use:
292
-
293
-        $ docker daemon --storage-opt "dm.mkfsarg=-O ^has_journal"
294
-
295
-*  `dm.mountopt`
296
-
297
-    Specifies extra mount options used when mounting the thin devices.
298
-
299
-    Example use:
300
-
301
-        $ docker daemon --storage-opt dm.mountopt=nodiscard
302
-
303
-*  `dm.datadev`
304
-
305
-    (Deprecated, use `dm.thinpooldev`)
306
-
307
-    Specifies a custom blockdevice to use for data for the thin pool.
308
-
309
-    If using a block device for device mapper storage, ideally both datadev and
310
-    metadatadev should be specified to completely avoid using the loopback
311
-    device.
312
-
313
-    Example use:
314
-
315
-        $ docker daemon \
316
-              --storage-opt dm.datadev=/dev/sdb1 \
317
-              --storage-opt dm.metadatadev=/dev/sdc1
318
-
319
-*  `dm.metadatadev`
320
-
321
-    (Deprecated, use `dm.thinpooldev`)
322
-
323
-    Specifies a custom blockdevice to use for metadata for the thin pool.
324
-
325
-    For best performance the metadata should be on a different spindle than the
326
-    data, or even better on an SSD.
327
-
328
-    If setting up a new metadata pool it is required to be valid. This can be
329
-    achieved by zeroing the first 4k to indicate empty metadata, like this:
330
-
331
-        $ dd if=/dev/zero of=$metadata_dev bs=4096 count=1
332
-
333
-    Example use:
334
-
335
-        $ docker daemon \
336
-              --storage-opt dm.datadev=/dev/sdb1 \
337
-              --storage-opt dm.metadatadev=/dev/sdc1
338
-
339
-*  `dm.blocksize`
340
-
341
-    Specifies a custom blocksize to use for the thin pool. The default
342
-    blocksize is 64K.
343
-
344
-    Example use:
345
-
346
-        $ docker daemon --storage-opt dm.blocksize=512K
347
-
348
-*  `dm.blkdiscard`
349
-
350
-    Enables or disables the use of blkdiscard when removing devicemapper
351
-    devices. This is enabled by default (only) if using loopback devices and is
352
-    required to resparsify the loopback file on image/container removal.
353
-
354
-    Disabling this on loopback can lead to *much* faster container removal
355
-    times, but will make the space used in `/var/lib/docker` directory not be
356
-    returned to the system for other use when containers are removed.
357
-
358
-    Example use:
359
-
360
-        $ docker daemon --storage-opt dm.blkdiscard=false
361
-
362
-*  `dm.override_udev_sync_check`
363
-
364
-    Overrides the `udev` synchronization checks between `devicemapper` and `udev`.
365
-    `udev` is the device manager for the Linux kernel.
366
-
367
-    To view the `udev` sync support of a Docker daemon that is using the
368
-    `devicemapper` driver, run:
369
-
370
-        $ docker info
371
-        [...]
372
-        Udev Sync Supported: true
373
-        [...]
374
-
375
-    When `udev` sync support is `true`, then `devicemapper` and udev can
376
-    coordinate the activation and deactivation of devices for containers.
377
-
378
-    When `udev` sync support is `false`, a race condition occurs between
379
-    the`devicemapper` and `udev` during create and cleanup. The race condition
380
-    results in errors and failures. (For information on these failures, see
381
-    [docker#4036](https://github.com/docker/docker/issues/4036))
382
-
383
-    To allow the `docker` daemon to start, regardless of `udev` sync not being
384
-    supported, set `dm.override_udev_sync_check` to true:
385
-
386
-        $ docker daemon --storage-opt dm.override_udev_sync_check=true
387
-
388
-    When this value is `true`, the  `devicemapper` continues and simply warns
389
-    you the errors are happening.
390
-
391
-    > **Note:**
392
-    > The ideal is to pursue a `docker` daemon and environment that does
393
-    > support synchronizing with `udev`. For further discussion on this
394
-    > topic, see [docker#4036](https://github.com/docker/docker/issues/4036).
395
-    > Otherwise, set this flag for migrating existing Docker daemons to
396
-    > a daemon with a supported environment.
397
-
398
-*  `dm.use_deferred_removal`
399
-
400
-    Enables use of deferred device removal if `libdm` and the kernel driver
401
-    support the mechanism.
402
-
403
-    Deferred device removal means that if device is busy when devices are
404
-    being removed/deactivated, then a deferred removal is scheduled on
405
-    device. And devices automatically go away when last user of the device
406
-    exits.
407
-
408
-    For example, when a container exits, its associated thin device is removed.
409
-    If that device has leaked into some other mount namespace and can't be
410
-    removed, the container exit still succeeds and this option causes the
411
-    system to schedule the device for deferred removal. It does not wait in a
412
-    loop trying to remove a busy device.
413
-
414
-    Example use:
415
-
416
-        $ docker daemon --storage-opt dm.use_deferred_removal=true
417
-
418
-*  `dm.use_deferred_deletion`
419
-
420
-    Enables use of deferred device deletion for thin pool devices. By default,
421
-    thin pool device deletion is synchronous. Before a container is deleted,
422
-    the Docker daemon removes any associated devices. If the storage driver
423
-    can not remove a device, the container deletion fails and daemon returns.
424
-
425
-        Error deleting container: Error response from daemon: Cannot destroy container
426
-
427
-    To avoid this failure, enable both deferred device deletion and deferred
428
-    device removal on the daemon.
429
-
430
-        $ docker daemon \
431
-              --storage-opt dm.use_deferred_deletion=true \
432
-              --storage-opt dm.use_deferred_removal=true
433
-
434
-    With these two options enabled, if a device is busy when the driver is
435
-    deleting a container, the driver marks the device as deleted. Later, when
436
-    the device isn't in use, the driver deletes it.
437
-
438
-    In general it should be safe to enable this option by default. It will help
439
-    when unintentional leaking of mount point happens across multiple mount
440
-    namespaces.
441
-
442
-*  `dm.min_free_space`
443
-
444
-    Specifies the min free space percent in a thin pool require for new device
445
-    creation to succeed. This check applies to both free data space as well
446
-    as free metadata space. Valid values are from 0% - 99%. Value 0% disables
447
-    free space checking logic. If user does not specify a value for this option,
448
-    the Engine uses a default value of 10%.
449
-
450
-    Whenever a new a thin pool device is created (during `docker pull` or during
451
-    container creation), the Engine checks if the minimum free space is
452
-    available. If sufficient space is unavailable, then device creation fails
453
-    and any relevant `docker` operation fails.
454
-
455
-    To recover from this error, you must create more free space in the thin pool
456
-    to recover from the error. You can create free space by deleting some images
457
-    and containers from the thin pool. You can also add more storage to the thin
458
-    pool.
459
-
460
-    To add more space to a LVM (logical volume management) thin pool, just add
461
-    more storage to the volume group container thin pool; this should automatically
462
-    resolve any errors. If your configuration uses loop devices, then stop the
463
-    Engine daemon, grow the size of loop files and restart the daemon to resolve
464
-    the issue.
465
-
466
-    Example use:
467
-
468
-    ```bash
469
-    $ docker daemon --storage-opt dm.min_free_space=10%
470
-    ```
471
-
472
-Currently supported options of `zfs`:
473
-
474
-* `zfs.fsname`
475
-
476
-    Set zfs filesystem under which docker will create its own datasets.
477
-    By default docker will pick up the zfs filesystem where docker graph
478
-    (`/var/lib/docker`) is located.
479
-
480
-    Example use:
481
-
482
-        $ docker daemon -s zfs --storage-opt zfs.fsname=zroot/docker
483
-
484
-## Docker runtime execution options
485
-
486
-The Docker daemon relies on a
487
-[OCI](https://github.com/opencontainers/specs) compliant runtime
488
-(invoked via the `containerd` daemon) as its interface to the Linux
489
-kernel `namespaces`, `cgroups`, and `SELinux`.
490
-
491
-## Options for the runtime
492
-
493
-You can configure the runtime using options specified
494
-with the `--exec-opt` flag. All the flag's options have the `native` prefix. A
495
-single `native.cgroupdriver` option is available.
496
-
497
-The `native.cgroupdriver` option specifies the management of the container's
498
-cgroups. You can specify only specify `cgroupfs` or `systemd`. If you specify
499
-`systemd` and it is not available, the system errors out. If you omit the
500
-`native.cgroupdriver` option,` cgroupfs` is used.
501
-
502
-This example sets the `cgroupdriver` to `systemd`:
503
-
504
-    $ sudo docker daemon --exec-opt native.cgroupdriver=systemd
505
-
506
-Setting this option applies to all containers the daemon launches.
507
-
508
-Also Windows Container makes use of `--exec-opt` for special purpose. Docker user
509
-can specify default container isolation technology with this, for example:
510
-
511
-    $ docker daemon --exec-opt isolation=hyperv
512
-
513
-Will make `hyperv` the default isolation technology on Windows, without specifying
514
-isolation value on daemon start, Windows isolation technology will default to `process`.
515
-
516
-## Daemon DNS options
517
-
518
-To set the DNS server for all Docker containers, use
519
-`docker daemon --dns 8.8.8.8`.
520
-
521
-To set the DNS search domain for all Docker containers, use
522
-`docker daemon --dns-search example.com`.
523
-
524
-## Insecure registries
525
-
526
-Docker considers a private registry either secure or insecure. In the rest of
527
-this section, *registry* is used for *private registry*, and `myregistry:5000`
528
-is a placeholder example for a private registry.
529
-
530
-A secure registry uses TLS and a copy of its CA certificate is placed on the
531
-Docker host at `/etc/docker/certs.d/myregistry:5000/ca.crt`. An insecure
532
-registry is either not using TLS (i.e., listening on plain text HTTP), or is
533
-using TLS with a CA certificate not known by the Docker daemon. The latter can
534
-happen when the certificate was not found under
535
-`/etc/docker/certs.d/myregistry:5000/`, or if the certificate verification
536
-failed (i.e., wrong CA).
537
-
538
-By default, Docker assumes all, but local (see local registries below),
539
-registries are secure. Communicating with an insecure registry is not possible
540
-if Docker assumes that registry is secure. In order to communicate with an
541
-insecure registry, the Docker daemon requires `--insecure-registry` in one of
542
-the following two forms:
543
-
544
-* `--insecure-registry myregistry:5000` tells the Docker daemon that
545
-  myregistry:5000 should be considered insecure.
546
-* `--insecure-registry 10.1.0.0/16` tells the Docker daemon that all registries
547
-  whose domain resolve to an IP address is part of the subnet described by the
548
-  CIDR syntax, should be considered insecure.
549
-
550
-The flag can be used multiple times to allow multiple registries to be marked
551
-as insecure.
552
-
553
-If an insecure registry is not marked as insecure, `docker pull`,
554
-`docker push`, and `docker search` will result in an error message prompting
555
-the user to either secure or pass the `--insecure-registry` flag to the Docker
556
-daemon as described above.
557
-
558
-Local registries, whose IP address falls in the 127.0.0.0/8 range, are
559
-automatically marked as insecure as of Docker 1.3.2. It is not recommended to
560
-rely on this, as it may change in the future.
561
-
562
-Enabling `--insecure-registry`, i.e., allowing un-encrypted and/or untrusted
563
-communication, can be useful when running a local registry.  However,
564
-because its use creates security vulnerabilities it should ONLY be enabled for
565
-testing purposes.  For increased security, users should add their CA to their
566
-system's list of trusted CAs instead of enabling `--insecure-registry`.
567
-
568
-## Legacy Registries
569
-
570
-Enabling `--disable-legacy-registry` forces a docker daemon to only interact with registries which support the V2 protocol.  Specifically, the daemon will not attempt `push`, `pull` and `login` to v1 registries.  The exception to this is `search` which can still be performed on v1 registries.
571
-
572
-## Running a Docker daemon behind a HTTPS_PROXY
573
-
574
-When running inside a LAN that uses a `HTTPS` proxy, the Docker Hub
575
-certificates will be replaced by the proxy's certificates. These certificates
576
-need to be added to your Docker host's configuration:
577
-
578
-1. Install the `ca-certificates` package for your distribution
579
-2. Ask your network admin for the proxy's CA certificate and append them to
580
-   `/etc/pki/tls/certs/ca-bundle.crt`
581
-3. Then start your Docker daemon with `HTTPS_PROXY=http://username:password@proxy:port/ docker daemon`.
582
-   The `username:` and `password@` are optional - and are only needed if your
583
-   proxy is set up to require authentication.
584
-
585
-This will only add the proxy and authentication to the Docker daemon's requests -
586
-your `docker build`s and running containers will need extra configuration to
587
-use the proxy
588
-
589
-## Default Ulimits
590
-
591
-`--default-ulimit` allows you to set the default `ulimit` options to use for
592
-all containers. It takes the same options as `--ulimit` for `docker run`. If
593
-these defaults are not set, `ulimit` settings will be inherited, if not set on
594
-`docker run`, from the Docker daemon. Any `--ulimit` options passed to
595
-`docker run` will overwrite these defaults.
596
-
597
-Be careful setting `nproc` with the `ulimit` flag as `nproc` is designed by Linux to
598
-set the maximum number of processes available to a user, not to a container. For details
599
-please check the [run](run.md) reference.
600
-
601
-## Nodes discovery
602
-
603
-The `--cluster-advertise` option specifies the `host:port` or `interface:port`
604
-combination that this particular daemon instance should use when advertising
605
-itself to the cluster. The daemon is reached by remote hosts through this value.
606
-If you  specify an interface, make sure it includes the IP address of the actual
607
-Docker host. For Engine installation created through `docker-machine`, the
608
-interface is typically `eth1`.
609
-
610
-The daemon uses [libkv](https://github.com/docker/libkv/) to advertise
611
-the node within the cluster. Some key-value backends support mutual
612
-TLS. To configure the client TLS settings used by the daemon can be configured
613
-using the `--cluster-store-opt` flag, specifying the paths to PEM encoded
614
-files. For example:
615
-
616
-```bash
617
-docker daemon \
618
-    --cluster-advertise 192.168.1.2:2376 \
619
-    --cluster-store etcd://192.168.1.2:2379 \
620
-    --cluster-store-opt kv.cacertfile=/path/to/ca.pem \
621
-    --cluster-store-opt kv.certfile=/path/to/cert.pem \
622
-    --cluster-store-opt kv.keyfile=/path/to/key.pem
623
-```
624
-
625
-The currently supported cluster store options are:
626
-
627
-*  `discovery.heartbeat`
628
-
629
-    Specifies the heartbeat timer in seconds which is used by the daemon as a
630
-    keepalive mechanism to make sure discovery module treats the node as alive
631
-    in the cluster. If not configured, the default value is 20 seconds.
632
-
633
-*  `discovery.ttl`
634
-
635
-    Specifies the ttl (time-to-live) in seconds which is used by the discovery
636
-    module to timeout a node if a valid heartbeat is not received within the
637
-    configured ttl value. If not configured, the default value is 60 seconds.
638
-
639
-*  `kv.cacertfile`
640
-
641
-    Specifies the path to a local file with PEM encoded CA certificates to trust
642
-
643
-*  `kv.certfile`
644
-
645
-    Specifies the path to a local file with a PEM encoded certificate.  This
646
-    certificate is used as the client cert for communication with the
647
-    Key/Value store.
648
-
649
-*  `kv.keyfile`
650
-
651
-    Specifies the path to a local file with a PEM encoded private key.  This
652
-    private key is used as the client key for communication with the
653
-    Key/Value store.
654
-
655
-*  `kv.path`
656
-
657
-    Specifies the path in the Key/Value store. If not configured, the default value is 'docker/nodes'.
658
-
659
-## Access authorization
660
-
661
-Docker's access authorization can be extended by authorization plugins that your
662
-organization can purchase or build themselves. You can install one or more
663
-authorization plugins when you start the Docker `daemon` using the
664
-`--authorization-plugin=PLUGIN_ID` option.
665
-
666
-```bash
667
-docker daemon --authorization-plugin=plugin1 --authorization-plugin=plugin2,...
668
-```
669
-
670
-The `PLUGIN_ID` value is either the plugin's name or a path to its specification
671
-file. The plugin's implementation determines whether you can specify a name or
672
-path. Consult with your Docker administrator to get information about the
673
-plugins available to you.
674
-
675
-Once a plugin is installed, requests made to the `daemon` through the command
676
-line or Docker's remote API are allowed or denied by the plugin.  If you have
677
-multiple plugins installed, at least one must allow the request for it to
678
-complete.
679
-
680
-For information about how to create an authorization plugin, see [authorization
681
-plugin](../../extend/plugins_authorization.md) section in the Docker extend section of this documentation.
682
-
683
-
684
-## Daemon user namespace options
685
-
686
-The Linux kernel [user namespace support](http://man7.org/linux/man-pages/man7/user_namespaces.7.html) provides additional security by enabling
687
-a process, and therefore a container, to have a unique range of user and
688
-group IDs which are outside the traditional user and group range utilized by
689
-the host system. Potentially the most important security improvement is that,
690
-by default, container processes running as the `root` user will have expected
691
-administrative privilege (with some restrictions) inside the container but will
692
-effectively be mapped to an unprivileged `uid` on the host.
693
-
694
-When user namespace support is enabled, Docker creates a single daemon-wide mapping
695
-for all containers running on the same engine instance. The mappings will
696
-utilize the existing subordinate user and group ID feature available on all modern
697
-Linux distributions.
698
-The [`/etc/subuid`](http://man7.org/linux/man-pages/man5/subuid.5.html) and
699
-[`/etc/subgid`](http://man7.org/linux/man-pages/man5/subgid.5.html) files will be
700
-read for the user, and optional group, specified to the `--userns-remap`
701
-parameter.  If you do not wish to specify your own user and/or group, you can
702
-provide `default` as the value to this flag, and a user will be created on your behalf
703
-and provided subordinate uid and gid ranges. This default user will be named
704
-`dockremap`, and entries will be created for it in `/etc/passwd` and
705
-`/etc/group` using your distro's standard user and group creation tools.
706
-
707
-> **Note**: The single mapping per-daemon restriction is in place for now
708
-> because Docker shares image layers from its local cache across all
709
-> containers running on the engine instance.  Since file ownership must be
710
-> the same for all containers sharing the same layer content, the decision
711
-> was made to map the file ownership on `docker pull` to the daemon's user and
712
-> group mappings so that there is no delay for running containers once the
713
-> content is downloaded. This design preserves the same performance for `docker
714
-> pull`, `docker push`, and container startup as users expect with
715
-> user namespaces disabled.
716
-
717
-### Starting the daemon with user namespaces enabled
718
-
719
-To enable user namespace support, start the daemon with the
720
-`--userns-remap` flag, which accepts values in the following formats:
721
-
722
- - uid
723
- - uid:gid
724
- - username
725
- - username:groupname
726
-
727
-If numeric IDs are provided, translation back to valid user or group names
728
-will occur so that the subordinate uid and gid information can be read, given
729
-these resources are name-based, not id-based.  If the numeric ID information
730
-provided does not exist as entries in `/etc/passwd` or `/etc/group`, daemon
731
-startup will fail with an error message.
732
-
733
-> **Note:** On Fedora 22, you have to `touch` the `/etc/subuid` and `/etc/subgid`
734
-> files to have ranges assigned when users are created.  This must be done
735
-> *before* the `--userns-remap` option is enabled. Once these files exist, the
736
-> daemon can be (re)started and range assignment on user creation works properly.
737
-
738
-*Example: starting with default Docker user management:*
739
-
740
-```bash
741
-$ docker daemon --userns-remap=default
742
-```
743
-
744
-When `default` is provided, Docker will create - or find the existing - user and group
745
-named `dockremap`. If the user is created, and the Linux distribution has
746
-appropriate support, the `/etc/subuid` and `/etc/subgid` files will be populated
747
-with a contiguous 65536 length range of subordinate user and group IDs, starting
748
-at an offset based on prior entries in those files.  For example, Ubuntu will
749
-create the following range, based on an existing user named `user1` already owning
750
-the first 65536 range:
751
-
752
-```bash
753
-$ cat /etc/subuid
754
-user1:100000:65536
755
-dockremap:165536:65536
756
-```
757
-
758
-If you have a preferred/self-managed user with subordinate ID mappings already
759
-configured, you can provide that username or uid to the `--userns-remap` flag.
760
-If you have a group that doesn't match the username, you may provide the `gid`
761
-or group name as well; otherwise the username will be used as the group name
762
-when querying the system for the subordinate group ID range.
763
-
764
-### Detailed information on `subuid`/`subgid` ranges
765
-
766
-Given potential advanced use of the subordinate ID ranges by power users, the
767
-following paragraphs define how the Docker daemon currently uses the range entries
768
-found within the subordinate range files.
769
-
770
-The simplest case is that only one contiguous range is defined for the
771
-provided user or group. In this case, Docker will use that entire contiguous
772
-range for the mapping of host uids and gids to the container process.  This
773
-means that the first ID in the range will be the remapped root user, and the
774
-IDs above that initial ID will map host ID 1 through the end of the range.
775
-
776
-From the example `/etc/subuid` content shown above, the remapped root
777
-user would be uid 165536.
778
-
779
-If the system administrator has set up multiple ranges for a single user or
780
-group, the Docker daemon will read all the available ranges and use the
781
-following algorithm to create the mapping ranges:
782
-
783
-1. The range segments found for the particular user will be sorted by *start ID* ascending.
784
-2. Map segments will be created from each range in increasing value with a length matching the length of each segment. Therefore the range segment with the lowest numeric starting value will be equal to the remapped root, and continue up through host uid/gid equal to the range segment length. As an example, if the lowest segment starts at ID 1000 and has a length of 100, then a map of 1000 -> 0 (the remapped root) up through 1100 -> 100 will be created from this segment. If the next segment starts at ID 10000, then the next map will start with mapping 10000 -> 101 up to the length of this second segment. This will continue until no more segments are found in the subordinate files for this user.
785
-3. If more than five range segments exist for a single user, only the first five will be utilized, matching the kernel's limitation of only five entries in `/proc/self/uid_map` and `proc/self/gid_map`.
786
-
787
-### Disable user namespace for a container
788
-
789
-If you enable user namespaces on the daemon, all containers are started
790
-with user namespaces enabled. In some situations you might want to disable
791
-this feature for a container, for example, to start a privileged container (see
792
-[user namespace known restrictions](#user-namespace-known-restrictions)).
793
-To enable those advanced features for a specific container use `--userns=host`
794
-in the `run/exec/create` command.
795
-This option will completely disable user namespace mapping for the container's user.
796
-
797
-### User namespace known restrictions
798
-
799
-The following standard Docker features are currently incompatible when
800
-running a Docker daemon with user namespaces enabled:
801
-
802
- - sharing PID or NET namespaces with the host (`--pid=host` or `--net=host`)
803
- - A `--readonly` container filesystem (this is a Linux kernel restriction against remounting with modified flags of a currently mounted filesystem when inside a user namespace)
804
- - external (volume or graph) drivers which are unaware/incapable of using daemon user mappings
805
- - Using `--privileged` mode flag on `docker run` (unless also specifying `--userns=host`)
806
-
807
-In general, user namespaces are an advanced feature and will require
808
-coordination with other capabilities. For example, if volumes are mounted from
809
-the host, file ownership will have to be pre-arranged if the user or
810
-administrator wishes the containers to have expected access to the volume
811
-contents.
812
-
813
-Finally, while the `root` user inside a user namespaced container process has
814
-many of the expected admin privileges that go along with being the superuser, the
815
-Linux kernel has restrictions based on internal knowledge that this is a user namespaced
816
-process. The most notable restriction that we are aware of at this time is the
817
-inability to use `mknod`. Permission will be denied for device creation even as
818
-container `root` inside a user namespace.
819
-
820
-## Miscellaneous options
821
-
822
-IP masquerading uses address translation to allow containers without a public
823
-IP to talk to other machines on the Internet. This may interfere with some
824
-network topologies and can be disabled with `--ip-masq=false`.
825
-
826
-Docker supports softlinks for the Docker data directory (`/var/lib/docker`) and
827
-for `/var/lib/docker/tmp`. The `DOCKER_TMPDIR` and the data directory can be
828
-set like this:
829
-
830
-    DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/docker daemon -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1
831
-    # or
832
-    export DOCKER_TMPDIR=/mnt/disk2/tmp
833
-    /usr/local/bin/docker daemon -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1
834
-
835
-
836
-## Default cgroup parent
837
-
838
-The `--cgroup-parent` option allows you to set the default cgroup parent
839
-to use for containers. If this option is not set, it defaults to `/docker` for
840
-fs cgroup driver and `system.slice` for systemd cgroup driver.
841
-
842
-If the cgroup has a leading forward slash (`/`), the cgroup is created
843
-under the root cgroup, otherwise the cgroup is created under the daemon
844
-cgroup.
845
-
846
-Assuming the daemon is running in cgroup `daemoncgroup`,
847
-`--cgroup-parent=/foobar` creates a cgroup in
848
-`/sys/fs/cgroup/memory/foobar`, whereas using `--cgroup-parent=foobar`
849
-creates the cgroup in `/sys/fs/cgroup/memory/daemoncgroup/foobar`
850
-
851
-The systemd cgroup driver has different rules for `--cgroup-parent`. Systemd
852
-represents hierarchy by slice and the name of the slice encodes the location in
853
-the tree. So `--cgroup-parent` for systemd cgroups should be a slice name. A
854
-name can consist of a dash-separated series of names, which describes the path
855
-to the slice from the root slice. For example, `--cgroup-parent=user-a-b.slice`
856
-means the memory cgroup for the container is created in
857
-`/sys/fs/cgroup/memory/user.slice/user-a.slice/user-a-b.slice/docker-<id>.scope`.
858
-
859
-This setting can also be set per container, using the `--cgroup-parent`
860
-option on `docker create` and `docker run`, and takes precedence over
861
-the `--cgroup-parent` option on the daemon.
862
-
863
-## Daemon configuration file
864
-
865
-The `--config-file` option allows you to set any configuration option
866
-for the daemon in a JSON format. This file uses the same flag names as keys,
867
-except for flags that allow several entries, where it uses the plural
868
-of the flag name, e.g., `labels` for the `label` flag. By default,
869
-docker tries to load a configuration file from `/etc/docker/daemon.json`
870
-on Linux and `%programdata%\docker\config\daemon.json` on Windows.
871
-
872
-The options set in the configuration file must not conflict with options set
873
-via flags. The docker daemon fails to start if an option is duplicated between
874
-the file and the flags, regardless their value. We do this to avoid
875
-silently ignore changes introduced in configuration reloads.
876
-For example, the daemon fails to start if you set daemon labels
877
-in the configuration file and also set daemon labels via the `--label` flag.
878
-
879
-Options that are not present in the file are ignored when the daemon starts.
880
-This is a full example of the allowed configuration options in the file:
881
-
882
-```json
883
-{
884
-	"authorization-plugins": [],
885
-	"dns": [],
886
-	"dns-opts": [],
887
-	"dns-search": [],
888
-	"exec-opts": [],
889
-	"exec-root": "",
890
-	"storage-driver": "",
891
-	"storage-opts": [],
892
-	"labels": [],
893
-	"log-driver": "",
894
-	"log-opts": [],
895
-	"mtu": 0,
896
-	"pidfile": "",
897
-	"graph": "",
898
-	"cluster-store": "",
899
-	"cluster-store-opts": [],
900
-	"cluster-advertise": "",
901
-	"debug": true,
902
-	"hosts": [],
903
-	"log-level": "",
904
-	"tls": true,
905
-	"tlsverify": true,
906
-	"tlscacert": "",
907
-	"tlscert": "",
908
-	"tlskey": "",
909
-	"api-cors-headers": "",
910
-	"selinux-enabled": false,
911
-	"userns-remap": "",
912
-	"group": "",
913
-	"cgroup-parent": "",
914
-	"default-ulimits": {},
915
-	"ipv6": false,
916
-	"iptables": false,
917
-	"ip-forward": false,
918
-	"ip-mask": false,
919
-	"userland-proxy": false,
920
-	"ip": "0.0.0.0",
921
-	"bridge": "",
922
-	"bip": "",
923
-	"fixed-cidr": "",
924
-	"fixed-cidr-v6": "",
925
-	"default-gateway": "",
926
-	"default-gateway-v6": "",
927
-	"icc": false,
928
-	"raw-logs": false,
929
-	"registry-mirrors": [],
930
-	"insecure-registries": [],
931
-	"disable-legacy-registry": false
932
-}
933
-```
934
-
935
-### Configuration reloading
936
-
937
-Some options can be reconfigured when the daemon is running without requiring
938
-to restart the process. We use the `SIGHUP` signal in Linux to reload, and a global event
939
-in Windows with the key `Global\docker-daemon-config-$PID`. The options can
940
-be modified in the configuration file but still will check for conflicts with
941
-the provided flags. The daemon fails to reconfigure itself
942
-if there are conflicts, but it won't stop execution.
943
-
944
-The list of currently supported options that can be reconfigured is this:
945
-
946
-- `debug`: it changes the daemon to debug mode when set to true.
947
-- `cluster-store`: it reloads the discovery store with the new address.
948
-- `cluster-store-opts`: it uses the new options to reload the discovery store.
949
-- `cluster-advertise`: it modifies the address advertised after reloading.
950
-- `labels`: it replaces the daemon labels with a new set of labels.
951
-
952
-Updating and reloading the cluster configurations such as `--cluster-store`,
953
-`--cluster-advertise` and `--cluster-store-opts` will take effect only if
954
-these configurations were not previously configured. If `--cluster-store`
955
-has been provided in flags and `cluster-advertise` not, `cluster-advertise`
956
-can be added in the configuration file without accompanied by `--cluster-store`
957
-Configuration reload will log a warning message if it detects a change in
958
-previously configured cluster configurations.
959 1
new file mode 100644
... ...
@@ -0,0 +1,959 @@
0
+<!--[metadata]>
1
+title = "dockerd"
2
+aliases = ["/engine/reference/commandline/daemon/"]
3
+description = "The daemon command description and usage"
4
+keywords = ["container, daemon, runtime"]
5
+[menu.main]
6
+parent = "smn_cli"
7
+weight = -1
8
+<![end-metadata]-->
9
+
10
+# daemon
11
+
12
+    Usage: dockerd [OPTIONS]
13
+
14
+    A self-sufficient runtime for linux containers.
15
+
16
+    Options:
17
+      --api-cors-header=""                   Set CORS headers in the remote API
18
+      --authorization-plugin=[]              Set authorization plugins to load
19
+      -b, --bridge=""                        Attach containers to a network bridge
20
+      --bip=""                               Specify network bridge IP
21
+      --cgroup-parent=                       Set parent cgroup for all containers
22
+      --cluster-store=""                     URL of the distributed storage backend
23
+      --cluster-advertise=""                 Address of the daemon instance on the cluster
24
+      --cluster-store-opt=map[]              Set cluster options
25
+      --config-file=/etc/docker/daemon.json  Daemon configuration file
26
+      --containerd                           Path to containerd socket
27
+      -D, --debug                            Enable debug mode
28
+      --default-gateway=""                   Container default gateway IPv4 address
29
+      --default-gateway-v6=""                Container default gateway IPv6 address
30
+      --dns=[]                               DNS server to use
31
+      --dns-opt=[]                           DNS options to use
32
+      --dns-search=[]                        DNS search domains to use
33
+      --default-ulimit=[]                    Set default ulimit settings for containers
34
+      --exec-opt=[]                          Set runtime execution options
35
+      --exec-root="/var/run/docker"          Root directory for execution state files
36
+      --fixed-cidr=""                        IPv4 subnet for fixed IPs
37
+      --fixed-cidr-v6=""                     IPv6 subnet for fixed IPs
38
+      -G, --group="docker"                   Group for the unix socket
39
+      -g, --graph="/var/lib/docker"          Root of the Docker runtime
40
+      -H, --host=[]                          Daemon socket(s) to connect to
41
+      --help                                 Print usage
42
+      --icc=true                             Enable inter-container communication
43
+      --insecure-registry=[]                 Enable insecure registry communication
44
+      --ip=0.0.0.0                           Default IP when binding container ports
45
+      --ip-forward=true                      Enable net.ipv4.ip_forward
46
+      --ip-masq=true                         Enable IP masquerading
47
+      --iptables=true                        Enable addition of iptables rules
48
+      --ipv6                                 Enable IPv6 networking
49
+      -l, --log-level="info"                 Set the logging level
50
+      --label=[]                             Set key=value labels to the daemon
51
+      --log-driver="json-file"               Default driver for container logs
52
+      --log-opt=[]                           Log driver specific options
53
+      --mtu=0                                Set the containers network MTU
54
+      --disable-legacy-registry              Do not contact legacy registries
55
+      -p, --pidfile="/var/run/docker.pid"    Path to use for daemon PID file
56
+      --raw-logs                             Full timestamps without ANSI coloring
57
+      --registry-mirror=[]                   Preferred Docker registry mirror
58
+      -s, --storage-driver=""                Storage driver to use
59
+      --selinux-enabled                      Enable selinux support
60
+      --storage-opt=[]                       Set storage driver options
61
+      --tls                                  Use TLS; implied by --tlsverify
62
+      --tlscacert="~/.docker/ca.pem"         Trust certs signed only by this CA
63
+      --tlscert="~/.docker/cert.pem"         Path to TLS certificate file
64
+      --tlskey="~/.docker/key.pem"           Path to TLS key file
65
+      --tlsverify                            Use TLS and verify the remote
66
+      --userns-remap="default"               Enable user namespace remapping
67
+      --userland-proxy=true                  Use userland proxy for loopback traffic
68
+
69
+Options with [] may be specified multiple times.
70
+
71
+dockerd is the persistent process that manages containers. Docker
72
+uses different binaries for the daemon and client. To run the daemon you
73
+type `dockerd`.
74
+
75
+To run the daemon with debug output, use `dockerd -D`.
76
+
77
+## Daemon socket option
78
+
79
+The Docker daemon can listen for [Docker Remote API](../api/docker_remote_api.md)
80
+requests via three different types of Socket: `unix`, `tcp`, and `fd`.
81
+
82
+By default, a `unix` domain socket (or IPC socket) is created at
83
+`/var/run/docker.sock`, requiring either `root` permission, or `docker` group
84
+membership.
85
+
86
+If you need to access the Docker daemon remotely, you need to enable the `tcp`
87
+Socket. Beware that the default setup provides un-encrypted and
88
+un-authenticated direct access to the Docker daemon - and should be secured
89
+either using the [built in HTTPS encrypted socket](../../security/https/), or by
90
+putting a secure web proxy in front of it. You can listen on port `2375` on all
91
+network interfaces with `-H tcp://0.0.0.0:2375`, or on a particular network
92
+interface using its IP address: `-H tcp://192.168.59.103:2375`. It is
93
+conventional to use port `2375` for un-encrypted, and port `2376` for encrypted
94
+communication with the daemon.
95
+
96
+> **Note:**
97
+> If you're using an HTTPS encrypted socket, keep in mind that only
98
+> TLS1.0 and greater are supported. Protocols SSLv3 and under are not
99
+> supported anymore for security reasons.
100
+
101
+On Systemd based systems, you can communicate with the daemon via
102
+[Systemd socket activation](http://0pointer.de/blog/projects/socket-activation.html),
103
+use `dockerd -H fd://`. Using `fd://` will work perfectly for most setups but
104
+you can also specify individual sockets: `dockerd -H fd://3`. If the
105
+specified socket activated files aren't found, then Docker will exit. You can
106
+find examples of using Systemd socket activation with Docker and Systemd in the
107
+[Docker source tree](https://github.com/docker/docker/tree/master/contrib/init/systemd/).
108
+
109
+You can configure the Docker daemon to listen to multiple sockets at the same
110
+time using multiple `-H` options:
111
+
112
+    # listen using the default unix socket, and on 2 specific IP addresses on this host.
113
+    dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2
114
+
115
+The Docker client will honor the `DOCKER_HOST` environment variable to set the
116
+`-H` flag for the client.
117
+
118
+    $ docker -H tcp://0.0.0.0:2375 ps
119
+    # or
120
+    $ export DOCKER_HOST="tcp://0.0.0.0:2375"
121
+    $ docker ps
122
+    # both are equal
123
+
124
+Setting the `DOCKER_TLS_VERIFY` environment variable to any value other than
125
+the empty string is equivalent to setting the `--tlsverify` flag. The following
126
+are equivalent:
127
+
128
+    $ docker --tlsverify ps
129
+    # or
130
+    $ export DOCKER_TLS_VERIFY=1
131
+    $ docker ps
132
+
133
+The Docker client will honor the `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY`
134
+environment variables (or the lowercase versions thereof). `HTTPS_PROXY` takes
135
+precedence over `HTTP_PROXY`.
136
+
137
+### Daemon storage-driver option
138
+
139
+The Docker daemon has support for several different image layer storage
140
+drivers: `aufs`, `devicemapper`, `btrfs`, `zfs` and `overlay`.
141
+
142
+The `aufs` driver is the oldest, but is based on a Linux kernel patch-set that
143
+is unlikely to be merged into the main kernel. These are also known to cause
144
+some serious kernel crashes. However, `aufs` is also the only storage driver
145
+that allows containers to share executable and shared library memory, so is a
146
+useful choice when running thousands of containers with the same program or
147
+libraries.
148
+
149
+The `devicemapper` driver uses thin provisioning and Copy on Write (CoW)
150
+snapshots. For each devicemapper graph location – typically
151
+`/var/lib/docker/devicemapper` – a thin pool is created based on two block
152
+devices, one for data and one for metadata. By default, these block devices
153
+are created automatically by using loopback mounts of automatically created
154
+sparse files. Refer to [Storage driver options](#storage-driver-options) below
155
+for a way how to customize this setup.
156
+[~jpetazzo/Resizing Docker containers with the Device Mapper plugin](http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/)
157
+article explains how to tune your existing setup without the use of options.
158
+
159
+The `btrfs` driver is very fast for `docker build` - but like `devicemapper`
160
+does not share executable memory between devices. Use
161
+`dockerd -s btrfs -g /mnt/btrfs_partition`.
162
+
163
+The `zfs` driver is probably not as fast as `btrfs` but has a longer track record
164
+on stability. Thanks to `Single Copy ARC` shared blocks between clones will be
165
+cached only once. Use `dockerd -s zfs`. To select a different zfs filesystem
166
+set `zfs.fsname` option as described in [Storage driver options](#storage-driver-options).
167
+
168
+The `overlay` is a very fast union filesystem. It is now merged in the main
169
+Linux kernel as of [3.18.0](https://lkml.org/lkml/2014/10/26/137). Call
170
+`dockerd -s overlay` to use it.
171
+
172
+> **Note:**
173
+> As promising as `overlay` is, the feature is still quite young and should not
174
+> be used in production. Most notably, using `overlay` can cause excessive
175
+> inode consumption (especially as the number of images grows), as well as
176
+> being incompatible with the use of RPMs.
177
+
178
+> **Note:**
179
+> It is currently unsupported on `btrfs` or any Copy on Write filesystem
180
+> and should only be used over `ext4` partitions.
181
+
182
+### Storage driver options
183
+
184
+Particular storage-driver can be configured with options specified with
185
+`--storage-opt` flags. Options for `devicemapper` are prefixed with `dm` and
186
+options for `zfs` start with `zfs`.
187
+
188
+*  `dm.thinpooldev`
189
+
190
+     Specifies a custom block storage device to use for the thin pool.
191
+
192
+     If using a block device for device mapper storage, it is best to use `lvm`
193
+     to create and manage the thin-pool volume. This volume is then handed to Docker
194
+     to exclusively create snapshot volumes needed for images and containers.
195
+
196
+     Managing the thin-pool outside of Engine makes for the most feature-rich
197
+     method of having Docker utilize device mapper thin provisioning as the
198
+     backing storage for Docker containers. The highlights of the lvm-based
199
+     thin-pool management feature include: automatic or interactive thin-pool
200
+     resize support, dynamically changing thin-pool features, automatic thinp
201
+     metadata checking when lvm activates the thin-pool, etc.
202
+
203
+     As a fallback if no thin pool is provided, loopback files are
204
+     created. Loopback is very slow, but can be used without any
205
+     pre-configuration of storage. It is strongly recommended that you do
206
+     not use loopback in production. Ensure your Engine daemon has a
207
+     `--storage-opt dm.thinpooldev` argument provided.
208
+
209
+     Example use:
210
+
211
+        $ dockerd \
212
+              --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
213
+
214
+*  `dm.basesize`
215
+
216
+    Specifies the size to use when creating the base device, which limits the
217
+    size of images and containers. The default value is 10G. Note, thin devices
218
+    are inherently "sparse", so a 10G device which is mostly empty doesn't use
219
+    10 GB of space on the pool. However, the filesystem will use more space for
220
+    the empty case the larger the device is.
221
+
222
+    The base device size can be increased at daemon restart which will allow
223
+    all future images and containers (based on those new images) to be of the
224
+    new base device size.
225
+
226
+    Example use:
227
+
228
+        $ dockerd --storage-opt dm.basesize=50G
229
+
230
+    This will increase the base device size to 50G. The Docker daemon will throw an
231
+    error if existing base device size is larger than 50G. A user can use
232
+    this option to expand the base device size however shrinking is not permitted.
233
+
234
+    This value affects the system-wide "base" empty filesystem
235
+    that may already be initialized and inherited by pulled images. Typically,
236
+    a change to this value requires additional steps to take effect:
237
+
238
+        $ sudo service docker stop
239
+        $ sudo rm -rf /var/lib/docker
240
+        $ sudo service docker start
241
+
242
+    Example use:
243
+
244
+        $ dockerd --storage-opt dm.basesize=20G
245
+
246
+*  `dm.loopdatasize`
247
+
248
+    > **Note**:
249
+	> This option configures devicemapper loopback, which should not
250
+	> be used in production.
251
+
252
+    Specifies the size to use when creating the loopback file for the
253
+    "data" device which is used for the thin pool. The default size is
254
+    100G. The file is sparse, so it will not initially take up this
255
+    much space.
256
+
257
+    Example use:
258
+
259
+        $ dockerd --storage-opt dm.loopdatasize=200G
260
+
261
+*  `dm.loopmetadatasize`
262
+
263
+    > **Note**:
264
+    > This option configures devicemapper loopback, which should not
265
+    > be used in production.
266
+
267
+    Specifies the size to use when creating the loopback file for the
268
+    "metadata" device which is used for the thin pool. The default size
269
+    is 2G. The file is sparse, so it will not initially take up
270
+    this much space.
271
+
272
+    Example use:
273
+
274
+        $ dockerd --storage-opt dm.loopmetadatasize=4G
275
+
276
+*  `dm.fs`
277
+
278
+    Specifies the filesystem type to use for the base device. The supported
279
+    options are "ext4" and "xfs". The default is "xfs"
280
+
281
+    Example use:
282
+
283
+        $ dockerd --storage-opt dm.fs=ext4
284
+
285
+*  `dm.mkfsarg`
286
+
287
+    Specifies extra mkfs arguments to be used when creating the base device.
288
+
289
+    Example use:
290
+
291
+        $ dockerd --storage-opt "dm.mkfsarg=-O ^has_journal"
292
+
293
+*  `dm.mountopt`
294
+
295
+    Specifies extra mount options used when mounting the thin devices.
296
+
297
+    Example use:
298
+
299
+        $ dockerd --storage-opt dm.mountopt=nodiscard
300
+
301
+*  `dm.datadev`
302
+
303
+    (Deprecated, use `dm.thinpooldev`)
304
+
305
+    Specifies a custom blockdevice to use for data for the thin pool.
306
+
307
+    If using a block device for device mapper storage, ideally both datadev and
308
+    metadatadev should be specified to completely avoid using the loopback
309
+    device.
310
+
311
+    Example use:
312
+
313
+        $ dockerd \
314
+              --storage-opt dm.datadev=/dev/sdb1 \
315
+              --storage-opt dm.metadatadev=/dev/sdc1
316
+
317
+*  `dm.metadatadev`
318
+
319
+    (Deprecated, use `dm.thinpooldev`)
320
+
321
+    Specifies a custom blockdevice to use for metadata for the thin pool.
322
+
323
+    For best performance the metadata should be on a different spindle than the
324
+    data, or even better on an SSD.
325
+
326
+    If setting up a new metadata pool it is required to be valid. This can be
327
+    achieved by zeroing the first 4k to indicate empty metadata, like this:
328
+
329
+        $ dd if=/dev/zero of=$metadata_dev bs=4096 count=1
330
+
331
+    Example use:
332
+
333
+        $ dockerd \
334
+              --storage-opt dm.datadev=/dev/sdb1 \
335
+              --storage-opt dm.metadatadev=/dev/sdc1
336
+
337
+*  `dm.blocksize`
338
+
339
+    Specifies a custom blocksize to use for the thin pool. The default
340
+    blocksize is 64K.
341
+
342
+    Example use:
343
+
344
+        $ dockerd --storage-opt dm.blocksize=512K
345
+
346
+*  `dm.blkdiscard`
347
+
348
+    Enables or disables the use of blkdiscard when removing devicemapper
349
+    devices. This is enabled by default (only) if using loopback devices and is
350
+    required to resparsify the loopback file on image/container removal.
351
+
352
+    Disabling this on loopback can lead to *much* faster container removal
353
+    times, but will make the space used in `/var/lib/docker` directory not be
354
+    returned to the system for other use when containers are removed.
355
+
356
+    Example use:
357
+
358
+        $ dockerd --storage-opt dm.blkdiscard=false
359
+
360
+*  `dm.override_udev_sync_check`
361
+
362
+    Overrides the `udev` synchronization checks between `devicemapper` and `udev`.
363
+    `udev` is the device manager for the Linux kernel.
364
+
365
+    To view the `udev` sync support of a Docker daemon that is using the
366
+    `devicemapper` driver, run:
367
+
368
+        $ docker info
369
+        [...]
370
+        Udev Sync Supported: true
371
+        [...]
372
+
373
+    When `udev` sync support is `true`, then `devicemapper` and udev can
374
+    coordinate the activation and deactivation of devices for containers.
375
+
376
+    When `udev` sync support is `false`, a race condition occurs between
377
+    the`devicemapper` and `udev` during create and cleanup. The race condition
378
+    results in errors and failures. (For information on these failures, see
379
+    [docker#4036](https://github.com/docker/docker/issues/4036))
380
+
381
+    To allow the `docker` daemon to start, regardless of `udev` sync not being
382
+    supported, set `dm.override_udev_sync_check` to true:
383
+
384
+        $ dockerd --storage-opt dm.override_udev_sync_check=true
385
+
386
+    When this value is `true`, the  `devicemapper` continues and simply warns
387
+    you the errors are happening.
388
+
389
+    > **Note:**
390
+    > The ideal is to pursue a `docker` daemon and environment that does
391
+    > support synchronizing with `udev`. For further discussion on this
392
+    > topic, see [docker#4036](https://github.com/docker/docker/issues/4036).
393
+    > Otherwise, set this flag for migrating existing Docker daemons to
394
+    > a daemon with a supported environment.
395
+
396
+*  `dm.use_deferred_removal`
397
+
398
+    Enables use of deferred device removal if `libdm` and the kernel driver
399
+    support the mechanism.
400
+
401
+    Deferred device removal means that if device is busy when devices are
402
+    being removed/deactivated, then a deferred removal is scheduled on
403
+    device. And devices automatically go away when last user of the device
404
+    exits.
405
+
406
+    For example, when a container exits, its associated thin device is removed.
407
+    If that device has leaked into some other mount namespace and can't be
408
+    removed, the container exit still succeeds and this option causes the
409
+    system to schedule the device for deferred removal. It does not wait in a
410
+    loop trying to remove a busy device.
411
+
412
+    Example use:
413
+
414
+        $ dockerd --storage-opt dm.use_deferred_removal=true
415
+
416
+*  `dm.use_deferred_deletion`
417
+
418
+    Enables use of deferred device deletion for thin pool devices. By default,
419
+    thin pool device deletion is synchronous. Before a container is deleted,
420
+    the Docker daemon removes any associated devices. If the storage driver
421
+    can not remove a device, the container deletion fails and daemon returns.
422
+
423
+        Error deleting container: Error response from daemon: Cannot destroy container
424
+
425
+    To avoid this failure, enable both deferred device deletion and deferred
426
+    device removal on the daemon.
427
+
428
+        $ dockerd \
429
+              --storage-opt dm.use_deferred_deletion=true \
430
+              --storage-opt dm.use_deferred_removal=true
431
+
432
+    With these two options enabled, if a device is busy when the driver is
433
+    deleting a container, the driver marks the device as deleted. Later, when
434
+    the device isn't in use, the driver deletes it.
435
+
436
+    In general it should be safe to enable this option by default. It will help
437
+    when unintentional leaking of mount point happens across multiple mount
438
+    namespaces.
439
+
440
+*  `dm.min_free_space`
441
+
442
+    Specifies the min free space percent in a thin pool require for new device
443
+    creation to succeed. This check applies to both free data space as well
444
+    as free metadata space. Valid values are from 0% - 99%. Value 0% disables
445
+    free space checking logic. If user does not specify a value for this option,
446
+    the Engine uses a default value of 10%.
447
+
448
+    Whenever a new a thin pool device is created (during `docker pull` or during
449
+    container creation), the Engine checks if the minimum free space is
450
+    available. If sufficient space is unavailable, then device creation fails
451
+    and any relevant `docker` operation fails.
452
+
453
+    To recover from this error, you must create more free space in the thin pool
454
+    to recover from the error. You can create free space by deleting some images
455
+    and containers from the thin pool. You can also add more storage to the thin
456
+    pool.
457
+
458
+    To add more space to a LVM (logical volume management) thin pool, just add
459
+    more storage to the volume group container thin pool; this should automatically
460
+    resolve any errors. If your configuration uses loop devices, then stop the
461
+    Engine daemon, grow the size of loop files and restart the daemon to resolve
462
+    the issue.
463
+
464
+    Example use:
465
+
466
+    ```bash
467
+    $ dockerd --storage-opt dm.min_free_space=10%
468
+    ```
469
+
470
+Currently supported options of `zfs`:
471
+
472
+* `zfs.fsname`
473
+
474
+    Set zfs filesystem under which docker will create its own datasets.
475
+    By default docker will pick up the zfs filesystem where docker graph
476
+    (`/var/lib/docker`) is located.
477
+
478
+    Example use:
479
+
480
+        $ dockerd -s zfs --storage-opt zfs.fsname=zroot/docker
481
+
482
+## Docker runtime execution options
483
+
484
+The Docker daemon relies on a
485
+[OCI](https://github.com/opencontainers/specs) compliant runtime
486
+(invoked via the `containerd` daemon) as its interface to the Linux
487
+kernel `namespaces`, `cgroups`, and `SELinux`.
488
+
489
+## Options for the runtime
490
+
491
+You can configure the runtime using options specified
492
+with the `--exec-opt` flag. All the flag's options have the `native` prefix. A
493
+single `native.cgroupdriver` option is available.
494
+
495
+The `native.cgroupdriver` option specifies the management of the container's
496
+cgroups. You can specify only specify `cgroupfs` or `systemd`. If you specify
497
+`systemd` and it is not available, the system errors out. If you omit the
498
+`native.cgroupdriver` option,` cgroupfs` is used.
499
+
500
+This example sets the `cgroupdriver` to `systemd`:
501
+
502
+    $ sudo dockerd --exec-opt native.cgroupdriver=systemd
503
+
504
+Setting this option applies to all containers the daemon launches.
505
+
506
+Also Windows Container makes use of `--exec-opt` for special purpose. Docker user
507
+can specify default container isolation technology with this, for example:
508
+
509
+    $ dockerd --exec-opt isolation=hyperv
510
+
511
+Will make `hyperv` the default isolation technology on Windows, without specifying
512
+isolation value on daemon start, Windows isolation technology will default to `process`.
513
+
514
+## Daemon DNS options
515
+
516
+To set the DNS server for all Docker containers, use
517
+`dockerd --dns 8.8.8.8`.
518
+
519
+To set the DNS search domain for all Docker containers, use
520
+`dockerd --dns-search example.com`.
521
+
522
+## Insecure registries
523
+
524
+Docker considers a private registry either secure or insecure. In the rest of
525
+this section, *registry* is used for *private registry*, and `myregistry:5000`
526
+is a placeholder example for a private registry.
527
+
528
+A secure registry uses TLS and a copy of its CA certificate is placed on the
529
+Docker host at `/etc/docker/certs.d/myregistry:5000/ca.crt`. An insecure
530
+registry is either not using TLS (i.e., listening on plain text HTTP), or is
531
+using TLS with a CA certificate not known by the Docker daemon. The latter can
532
+happen when the certificate was not found under
533
+`/etc/docker/certs.d/myregistry:5000/`, or if the certificate verification
534
+failed (i.e., wrong CA).
535
+
536
+By default, Docker assumes all, but local (see local registries below),
537
+registries are secure. Communicating with an insecure registry is not possible
538
+if Docker assumes that registry is secure. In order to communicate with an
539
+insecure registry, the Docker daemon requires `--insecure-registry` in one of
540
+the following two forms:
541
+
542
+* `--insecure-registry myregistry:5000` tells the Docker daemon that
543
+  myregistry:5000 should be considered insecure.
544
+* `--insecure-registry 10.1.0.0/16` tells the Docker daemon that all registries
545
+  whose domain resolve to an IP address is part of the subnet described by the
546
+  CIDR syntax, should be considered insecure.
547
+
548
+The flag can be used multiple times to allow multiple registries to be marked
549
+as insecure.
550
+
551
+If an insecure registry is not marked as insecure, `docker pull`,
552
+`docker push`, and `docker search` will result in an error message prompting
553
+the user to either secure or pass the `--insecure-registry` flag to the Docker
554
+daemon as described above.
555
+
556
+Local registries, whose IP address falls in the 127.0.0.0/8 range, are
557
+automatically marked as insecure as of Docker 1.3.2. It is not recommended to
558
+rely on this, as it may change in the future.
559
+
560
+Enabling `--insecure-registry`, i.e., allowing un-encrypted and/or untrusted
561
+communication, can be useful when running a local registry.  However,
562
+because its use creates security vulnerabilities it should ONLY be enabled for
563
+testing purposes.  For increased security, users should add their CA to their
564
+system's list of trusted CAs instead of enabling `--insecure-registry`.
565
+
566
+## Legacy Registries
567
+
568
+Enabling `--disable-legacy-registry` forces a docker daemon to only interact with registries which support the V2 protocol.  Specifically, the daemon will not attempt `push`, `pull` and `login` to v1 registries.  The exception to this is `search` which can still be performed on v1 registries.
569
+
570
+## Running a Docker daemon behind a HTTPS_PROXY
571
+
572
+When running inside a LAN that uses a `HTTPS` proxy, the Docker Hub
573
+certificates will be replaced by the proxy's certificates. These certificates
574
+need to be added to your Docker host's configuration:
575
+
576
+1. Install the `ca-certificates` package for your distribution
577
+2. Ask your network admin for the proxy's CA certificate and append them to
578
+   `/etc/pki/tls/certs/ca-bundle.crt`
579
+3. Then start your Docker daemon with `HTTPS_PROXY=http://username:password@proxy:port/ dockerd`.
580
+   The `username:` and `password@` are optional - and are only needed if your
581
+   proxy is set up to require authentication.
582
+
583
+This will only add the proxy and authentication to the Docker daemon's requests -
584
+your `docker build`s and running containers will need extra configuration to
585
+use the proxy
586
+
587
+## Default Ulimits
588
+
589
+`--default-ulimit` allows you to set the default `ulimit` options to use for
590
+all containers. It takes the same options as `--ulimit` for `docker run`. If
591
+these defaults are not set, `ulimit` settings will be inherited, if not set on
592
+`docker run`, from the Docker daemon. Any `--ulimit` options passed to
593
+`docker run` will overwrite these defaults.
594
+
595
+Be careful setting `nproc` with the `ulimit` flag as `nproc` is designed by Linux to
596
+set the maximum number of processes available to a user, not to a container. For details
597
+please check the [run](run.md) reference.
598
+
599
+## Nodes discovery
600
+
601
+The `--cluster-advertise` option specifies the `host:port` or `interface:port`
602
+combination that this particular daemon instance should use when advertising
603
+itself to the cluster. The daemon is reached by remote hosts through this value.
604
+If you  specify an interface, make sure it includes the IP address of the actual
605
+Docker host. For Engine installation created through `docker-machine`, the
606
+interface is typically `eth1`.
607
+
608
+The daemon uses [libkv](https://github.com/docker/libkv/) to advertise
609
+the node within the cluster. Some key-value backends support mutual
610
+TLS. To configure the client TLS settings used by the daemon can be configured
611
+using the `--cluster-store-opt` flag, specifying the paths to PEM encoded
612
+files. For example:
613
+
614
+```bash
615
+dockerd \
616
+    --cluster-advertise 192.168.1.2:2376 \
617
+    --cluster-store etcd://192.168.1.2:2379 \
618
+    --cluster-store-opt kv.cacertfile=/path/to/ca.pem \
619
+    --cluster-store-opt kv.certfile=/path/to/cert.pem \
620
+    --cluster-store-opt kv.keyfile=/path/to/key.pem
621
+```
622
+
623
+The currently supported cluster store options are:
624
+
625
+*  `discovery.heartbeat`
626
+
627
+    Specifies the heartbeat timer in seconds which is used by the daemon as a
628
+    keepalive mechanism to make sure discovery module treats the node as alive
629
+    in the cluster. If not configured, the default value is 20 seconds.
630
+
631
+*  `discovery.ttl`
632
+
633
+    Specifies the ttl (time-to-live) in seconds which is used by the discovery
634
+    module to timeout a node if a valid heartbeat is not received within the
635
+    configured ttl value. If not configured, the default value is 60 seconds.
636
+
637
+*  `kv.cacertfile`
638
+
639
+    Specifies the path to a local file with PEM encoded CA certificates to trust
640
+
641
+*  `kv.certfile`
642
+
643
+    Specifies the path to a local file with a PEM encoded certificate.  This
644
+    certificate is used as the client cert for communication with the
645
+    Key/Value store.
646
+
647
+*  `kv.keyfile`
648
+
649
+    Specifies the path to a local file with a PEM encoded private key.  This
650
+    private key is used as the client key for communication with the
651
+    Key/Value store.
652
+
653
+*  `kv.path`
654
+
655
+    Specifies the path in the Key/Value store. If not configured, the default value is 'docker/nodes'.
656
+
657
+## Access authorization
658
+
659
+Docker's access authorization can be extended by authorization plugins that your
660
+organization can purchase or build themselves. You can install one or more
661
+authorization plugins when you start the Docker `daemon` using the
662
+`--authorization-plugin=PLUGIN_ID` option.
663
+
664
+```bash
665
+dockerd --authorization-plugin=plugin1 --authorization-plugin=plugin2,...
666
+```
667
+
668
+The `PLUGIN_ID` value is either the plugin's name or a path to its specification
669
+file. The plugin's implementation determines whether you can specify a name or
670
+path. Consult with your Docker administrator to get information about the
671
+plugins available to you.
672
+
673
+Once a plugin is installed, requests made to the `daemon` through the command
674
+line or Docker's remote API are allowed or denied by the plugin.  If you have
675
+multiple plugins installed, at least one must allow the request for it to
676
+complete.
677
+
678
+For information about how to create an authorization plugin, see [authorization
679
+plugin](../../extend/plugins_authorization.md) section in the Docker extend section of this documentation.
680
+
681
+
682
+## Daemon user namespace options
683
+
684
+The Linux kernel [user namespace support](http://man7.org/linux/man-pages/man7/user_namespaces.7.html) provides additional security by enabling
685
+a process, and therefore a container, to have a unique range of user and
686
+group IDs which are outside the traditional user and group range utilized by
687
+the host system. Potentially the most important security improvement is that,
688
+by default, container processes running as the `root` user will have expected
689
+administrative privilege (with some restrictions) inside the container but will
690
+effectively be mapped to an unprivileged `uid` on the host.
691
+
692
+When user namespace support is enabled, Docker creates a single daemon-wide mapping
693
+for all containers running on the same engine instance. The mappings will
694
+utilize the existing subordinate user and group ID feature available on all modern
695
+Linux distributions.
696
+The [`/etc/subuid`](http://man7.org/linux/man-pages/man5/subuid.5.html) and
697
+[`/etc/subgid`](http://man7.org/linux/man-pages/man5/subgid.5.html) files will be
698
+read for the user, and optional group, specified to the `--userns-remap`
699
+parameter.  If you do not wish to specify your own user and/or group, you can
700
+provide `default` as the value to this flag, and a user will be created on your behalf
701
+and provided subordinate uid and gid ranges. This default user will be named
702
+`dockremap`, and entries will be created for it in `/etc/passwd` and
703
+`/etc/group` using your distro's standard user and group creation tools.
704
+
705
+> **Note**: The single mapping per-daemon restriction is in place for now
706
+> because Docker shares image layers from its local cache across all
707
+> containers running on the engine instance.  Since file ownership must be
708
+> the same for all containers sharing the same layer content, the decision
709
+> was made to map the file ownership on `docker pull` to the daemon's user and
710
+> group mappings so that there is no delay for running containers once the
711
+> content is downloaded. This design preserves the same performance for `docker
712
+> pull`, `docker push`, and container startup as users expect with
713
+> user namespaces disabled.
714
+
715
+### Starting the daemon with user namespaces enabled
716
+
717
+To enable user namespace support, start the daemon with the
718
+`--userns-remap` flag, which accepts values in the following formats:
719
+
720
+ - uid
721
+ - uid:gid
722
+ - username
723
+ - username:groupname
724
+
725
+If numeric IDs are provided, translation back to valid user or group names
726
+will occur so that the subordinate uid and gid information can be read, given
727
+these resources are name-based, not id-based.  If the numeric ID information
728
+provided does not exist as entries in `/etc/passwd` or `/etc/group`, daemon
729
+startup will fail with an error message.
730
+
731
+> **Note:** On Fedora 22, you have to `touch` the `/etc/subuid` and `/etc/subgid`
732
+> files to have ranges assigned when users are created.  This must be done
733
+> *before* the `--userns-remap` option is enabled. Once these files exist, the
734
+> daemon can be (re)started and range assignment on user creation works properly.
735
+
736
+*Example: starting with default Docker user management:*
737
+
738
+```bash
739
+$ dockerd --userns-remap=default
740
+```
741
+
742
+When `default` is provided, Docker will create - or find the existing - user and group
743
+named `dockremap`. If the user is created, and the Linux distribution has
744
+appropriate support, the `/etc/subuid` and `/etc/subgid` files will be populated
745
+with a contiguous 65536 length range of subordinate user and group IDs, starting
746
+at an offset based on prior entries in those files.  For example, Ubuntu will
747
+create the following range, based on an existing user named `user1` already owning
748
+the first 65536 range:
749
+
750
+```bash
751
+$ cat /etc/subuid
752
+user1:100000:65536
753
+dockremap:165536:65536
754
+```
755
+
756
+If you have a preferred/self-managed user with subordinate ID mappings already
757
+configured, you can provide that username or uid to the `--userns-remap` flag.
758
+If you have a group that doesn't match the username, you may provide the `gid`
759
+or group name as well; otherwise the username will be used as the group name
760
+when querying the system for the subordinate group ID range.
761
+
762
+### Detailed information on `subuid`/`subgid` ranges
763
+
764
+Given potential advanced use of the subordinate ID ranges by power users, the
765
+following paragraphs define how the Docker daemon currently uses the range entries
766
+found within the subordinate range files.
767
+
768
+The simplest case is that only one contiguous range is defined for the
769
+provided user or group. In this case, Docker will use that entire contiguous
770
+range for the mapping of host uids and gids to the container process.  This
771
+means that the first ID in the range will be the remapped root user, and the
772
+IDs above that initial ID will map host ID 1 through the end of the range.
773
+
774
+From the example `/etc/subuid` content shown above, the remapped root
775
+user would be uid 165536.
776
+
777
+If the system administrator has set up multiple ranges for a single user or
778
+group, the Docker daemon will read all the available ranges and use the
779
+following algorithm to create the mapping ranges:
780
+
781
+1. The range segments found for the particular user will be sorted by *start ID* ascending.
782
+2. Map segments will be created from each range in increasing value with a length matching the length of each segment. Therefore the range segment with the lowest numeric starting value will be equal to the remapped root, and continue up through host uid/gid equal to the range segment length. As an example, if the lowest segment starts at ID 1000 and has a length of 100, then a map of 1000 -> 0 (the remapped root) up through 1100 -> 100 will be created from this segment. If the next segment starts at ID 10000, then the next map will start with mapping 10000 -> 101 up to the length of this second segment. This will continue until no more segments are found in the subordinate files for this user.
783
+3. If more than five range segments exist for a single user, only the first five will be utilized, matching the kernel's limitation of only five entries in `/proc/self/uid_map` and `proc/self/gid_map`.
784
+
785
+### Disable user namespace for a container
786
+
787
+If you enable user namespaces on the daemon, all containers are started
788
+with user namespaces enabled. In some situations you might want to disable
789
+this feature for a container, for example, to start a privileged container (see
790
+[user namespace known restrictions](#user-namespace-known-restrictions)).
791
+To enable those advanced features for a specific container use `--userns=host`
792
+in the `run/exec/create` command.
793
+This option will completely disable user namespace mapping for the container's user.
794
+
795
+### User namespace known restrictions
796
+
797
+The following standard Docker features are currently incompatible when
798
+running a Docker daemon with user namespaces enabled:
799
+
800
+ - sharing PID or NET namespaces with the host (`--pid=host` or `--net=host`)
801
+ - A `--readonly` container filesystem (this is a Linux kernel restriction against remounting with modified flags of a currently mounted filesystem when inside a user namespace)
802
+ - external (volume or graph) drivers which are unaware/incapable of using daemon user mappings
803
+ - Using `--privileged` mode flag on `docker run` (unless also specifying `--userns=host`)
804
+
805
+In general, user namespaces are an advanced feature and will require
806
+coordination with other capabilities. For example, if volumes are mounted from
807
+the host, file ownership will have to be pre-arranged if the user or
808
+administrator wishes the containers to have expected access to the volume
809
+contents.
810
+
811
+Finally, while the `root` user inside a user namespaced container process has
812
+many of the expected admin privileges that go along with being the superuser, the
813
+Linux kernel has restrictions based on internal knowledge that this is a user namespaced
814
+process. The most notable restriction that we are aware of at this time is the
815
+inability to use `mknod`. Permission will be denied for device creation even as
816
+container `root` inside a user namespace.
817
+
818
+## Miscellaneous options
819
+
820
+IP masquerading uses address translation to allow containers without a public
821
+IP to talk to other machines on the Internet. This may interfere with some
822
+network topologies and can be disabled with `--ip-masq=false`.
823
+
824
+Docker supports softlinks for the Docker data directory (`/var/lib/docker`) and
825
+for `/var/lib/docker/tmp`. The `DOCKER_TMPDIR` and the data directory can be
826
+set like this:
827
+
828
+    DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/dockerd -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1
829
+    # or
830
+    export DOCKER_TMPDIR=/mnt/disk2/tmp
831
+    /usr/local/bin/dockerd -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1
832
+
833
+
834
+## Default cgroup parent
835
+
836
+The `--cgroup-parent` option allows you to set the default cgroup parent
837
+to use for containers. If this option is not set, it defaults to `/docker` for
838
+fs cgroup driver and `system.slice` for systemd cgroup driver.
839
+
840
+If the cgroup has a leading forward slash (`/`), the cgroup is created
841
+under the root cgroup, otherwise the cgroup is created under the daemon
842
+cgroup.
843
+
844
+Assuming the daemon is running in cgroup `daemoncgroup`,
845
+`--cgroup-parent=/foobar` creates a cgroup in
846
+`/sys/fs/cgroup/memory/foobar`, whereas using `--cgroup-parent=foobar`
847
+creates the cgroup in `/sys/fs/cgroup/memory/daemoncgroup/foobar`
848
+
849
+The systemd cgroup driver has different rules for `--cgroup-parent`. Systemd
850
+represents hierarchy by slice and the name of the slice encodes the location in
851
+the tree. So `--cgroup-parent` for systemd cgroups should be a slice name. A
852
+name can consist of a dash-separated series of names, which describes the path
853
+to the slice from the root slice. For example, `--cgroup-parent=user-a-b.slice`
854
+means the memory cgroup for the container is created in
855
+`/sys/fs/cgroup/memory/user.slice/user-a.slice/user-a-b.slice/docker-<id>.scope`.
856
+
857
+This setting can also be set per container, using the `--cgroup-parent`
858
+option on `docker create` and `docker run`, and takes precedence over
859
+the `--cgroup-parent` option on the daemon.
860
+
861
+## Daemon configuration file
862
+
863
+The `--config-file` option allows you to set any configuration option
864
+for the daemon in a JSON format. This file uses the same flag names as keys,
865
+except for flags that allow several entries, where it uses the plural
866
+of the flag name, e.g., `labels` for the `label` flag. By default,
867
+docker tries to load a configuration file from `/etc/docker/daemon.json`
868
+on Linux and `%programdata%\docker\config\daemon.json` on Windows.
869
+
870
+The options set in the configuration file must not conflict with options set
871
+via flags. The docker daemon fails to start if an option is duplicated between
872
+the file and the flags, regardless their value. We do this to avoid
873
+silently ignore changes introduced in configuration reloads.
874
+For example, the daemon fails to start if you set daemon labels
875
+in the configuration file and also set daemon labels via the `--label` flag.
876
+
877
+Options that are not present in the file are ignored when the daemon starts.
878
+This is a full example of the allowed configuration options in the file:
879
+
880
+```json
881
+{
882
+	"authorization-plugins": [],
883
+	"dns": [],
884
+	"dns-opts": [],
885
+	"dns-search": [],
886
+	"exec-opts": [],
887
+	"exec-root": "",
888
+	"storage-driver": "",
889
+	"storage-opts": [],
890
+	"labels": [],
891
+	"log-driver": "",
892
+	"log-opts": [],
893
+	"mtu": 0,
894
+	"pidfile": "",
895
+	"graph": "",
896
+	"cluster-store": "",
897
+	"cluster-store-opts": [],
898
+	"cluster-advertise": "",
899
+	"debug": true,
900
+	"hosts": [],
901
+	"log-level": "",
902
+	"tls": true,
903
+	"tlsverify": true,
904
+	"tlscacert": "",
905
+	"tlscert": "",
906
+	"tlskey": "",
907
+	"api-cors-headers": "",
908
+	"selinux-enabled": false,
909
+	"userns-remap": "",
910
+	"group": "",
911
+	"cgroup-parent": "",
912
+	"default-ulimits": {},
913
+	"ipv6": false,
914
+	"iptables": false,
915
+	"ip-forward": false,
916
+	"ip-mask": false,
917
+	"userland-proxy": false,
918
+	"ip": "0.0.0.0",
919
+	"bridge": "",
920
+	"bip": "",
921
+	"fixed-cidr": "",
922
+	"fixed-cidr-v6": "",
923
+	"default-gateway": "",
924
+	"default-gateway-v6": "",
925
+	"icc": false,
926
+	"raw-logs": false,
927
+	"registry-mirrors": [],
928
+	"insecure-registries": [],
929
+	"disable-legacy-registry": false
930
+}
931
+```
932
+
933
+### Configuration reloading
934
+
935
+Some options can be reconfigured when the daemon is running without requiring
936
+to restart the process. We use the `SIGHUP` signal in Linux to reload, and a global event
937
+in Windows with the key `Global\docker-daemon-config-$PID`. The options can
938
+be modified in the configuration file but still will check for conflicts with
939
+the provided flags. The daemon fails to reconfigure itself
940
+if there are conflicts, but it won't stop execution.
941
+
942
+The list of currently supported options that can be reconfigured is this:
943
+
944
+- `debug`: it changes the daemon to debug mode when set to true.
945
+- `cluster-store`: it reloads the discovery store with the new address.
946
+- `cluster-store-opts`: it uses the new options to reload the discovery store.
947
+- `cluster-advertise`: it modifies the address advertised after reloading.
948
+- `labels`: it replaces the daemon labels with a new set of labels.
949
+
950
+Updating and reloading the cluster configurations such as `--cluster-store`,
951
+`--cluster-advertise` and `--cluster-store-opts` will take effect only if
952
+these configurations were not previously configured. If `--cluster-store`
953
+has been provided in flags and `cluster-advertise` not, `cluster-advertise`
954
+can be added in the configuration file without accompanied by `--cluster-store`
955
+Configuration reload will log a warning message if it detects a change in
956
+previously configured cluster configurations.
... ...
@@ -16,11 +16,11 @@ weight=-70
16 16
 
17 17
 This section contains reference information on using Docker's command line client. Each command has a reference page along with samples. If you are unfamiliar with the command line, you should start by reading about how to [Use the Docker command line](cli.md).  
18 18
 
19
-You start the Docker daemon with the command line. How you start the daemon affects your Docker containers. For that reason you should also make sure to read the [`daemon`](daemon.md) reference page.
19
+You start the Docker daemon with the command line. How you start the daemon affects your Docker containers. For that reason you should also make sure to read the [`dockerd`](dockerd.md) reference page.
20 20
 
21 21
 ### Docker management commands
22 22
 
23
-* [daemon](daemon.md)
23
+* [dockerd](dockerd.md)
24 24
 * [info](info.md)
25 25
 * [inspect](inspect.md)
26 26
 * [version](version.md)
... ...
@@ -169,7 +169,7 @@ Registry credentials are managed by [docker login](login.md).
169 169
 
170 170
 Docker uses the `https://` protocol to communicate with a registry, unless the
171 171
 registry is allowed to be accessed over an insecure connection. Refer to the
172
-[insecure registries](daemon.md#insecure-registries) section for more information.
172
+[insecure registries](dockerd.md#insecure-registries) section for more information.
173 173
 
174 174
 
175 175
 ## Pull a repository with multiple images
... ...
@@ -249,7 +249,7 @@ to a non uid-0 user outside the container, which can help to mitigate the
249 249
 risks of container breakout. This facility is available but not enabled
250 250
 by default.
251 251
 
252
-Refer to the [daemon command](../reference/commandline/daemon.md#daemon-user-namespace-options)
252
+Refer to the [daemon command](../reference/commandline/dockerd.md#daemon-user-namespace-options)
253 253
 in the command line reference for more information on this feature.
254 254
 Additional information on the implementation of User Namespaces in Docker
255 255
 can be found in <a href="https://integratedcode.us/2015/10/13/user-namespaces-have-arrived-in-docker/" target="_blank">this blog post</a>.
... ...
@@ -35,7 +35,7 @@ specify an IPv6 subnet to pick the addresses from. Set the IPv6 subnet via the
35 35
 `--fixed-cidr-v6` parameter when starting Docker daemon:
36 36
 
37 37
 ```
38
-docker daemon --ipv6 --fixed-cidr-v6="2001:db8:1::/64"
38
+dockerd --ipv6 --fixed-cidr-v6="2001:db8:1::/64"
39 39
 ```
40 40
 
41 41
 The subnet for Docker containers should at least have a size of `/80`. This way
... ...
@@ -44,7 +44,7 @@ neighbor cache invalidation issues in the Docker layer.
44 44
 
45 45
 With the `--fixed-cidr-v6` parameter set Docker will add a new route to the
46 46
 routing table. Further IPv6 routing will be enabled (you may prevent this by
47
-starting Docker daemon with `--ip-forward=false`):
47
+starting dockerd with `--ip-forward=false`):
48 48
 
49 49
 ```
50 50
 $ ip -6 route add 2001:db8:1::/64 dev docker0
... ...
@@ -128,7 +128,7 @@ Let's split up the configurable address range into two subnets
128 128
 host itself, the latter by Docker:
129 129
 
130 130
 ```
131
-docker daemon --ipv6 --fixed-cidr-v6 2001:db8::c008/125
131
+dockerd --ipv6 --fixed-cidr-v6 2001:db8::c008/125
132 132
 ```
133 133
 
134 134
 You notice the Docker subnet is within the subnet managed by your router that is
... ...
@@ -66,7 +66,7 @@ before you can create one. These conditions are:
66 66
 * A cluster of hosts with connectivity to the key-value store.
67 67
 * A properly configured Engine `daemon` on each host in the swarm.
68 68
 
69
-The `docker daemon` options that support the `overlay` network are:
69
+The `dockerd` options that support the `overlay` network are:
70 70
 
71 71
 * `--cluster-store`
72 72
 * `--cluster-store-opt`
... ...
@@ -101,9 +101,9 @@ Use the following command to determine if your system supports AUFS.
101 101
 
102 102
 This output indicates the system supports AUFS. Once you've verified your
103 103
 system supports AUFS, you can must instruct the Docker daemon to use it. You do
104
-this from the command line with the `docker daemon` command:
104
+this from the command line with the `dockerd` command:
105 105
 
106
-    $ sudo docker daemon --storage-driver=aufs &
106
+    $ sudo dockerd --storage-driver=aufs &
107 107
 
108 108
 
109 109
 Alternatively, you can edit the Docker config file and add the
... ...
@@ -131,7 +131,7 @@ driver on top of an existing `ext4` backing filesystem.
131 131
 
132 132
 ## Local storage and AUFS
133 133
 
134
-As the `docker daemon` runs with the AUFS driver, the driver stores images and
134
+As the `dockerd` runs with the AUFS driver, the driver stores images and
135 135
 containers within the Docker host's local storage area under
136 136
 `/var/lib/docker/aufs/`.
137 137
 
... ...
@@ -354,7 +354,7 @@ If you run into repeated problems with thin pool, you can use the
354 354
 `dm.min_free_space` option to tune the Engine behavior. This value ensures that
355 355
 operations fail with a warning when the free space is at or near the minimum.
356 356
 For information, see <a
357
-href="https://docs.docker.com/engine/reference/commandline/daemon/#storage-driver-options"
357
+href="https://docs.docker.com/engine/reference/commandline/dockerd/#storage-driver-options"
358 358
 target="_blank">the storage driver options in the Engine daemon reference</a>.
359 359
 
360 360
 
... ...
@@ -630,4 +630,4 @@ data volumes.
630 630
 * [Select a storage driver](selectadriver.md)
631 631
 * [AUFS storage driver in practice](aufs-driver.md)
632 632
 * [Btrfs storage driver in practice](btrfs-driver.md)
633
-* [daemon reference](../../reference/commandline/daemon#storage-driver-options)
633
+* [daemon reference](../../reference/commandline/dockerd#storage-driver-options)
... ...
@@ -218,7 +218,7 @@ OverlayFS. The procedure assumes that the Docker daemon is in a stopped state.
218 218
 
219 219
 3. Start the Docker daemon with the `overlay` storage driver.
220 220
 
221
-        $ docker daemon --storage-driver=overlay &
221
+        $ dockerd --storage-driver=overlay &
222 222
         [1] 29403
223 223
         root@ip-10-0-0-174:/home/ubuntu# INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
224 224
         INFO[0000] Option DefaultDriver: bridge
... ...
@@ -86,13 +86,13 @@ backing file system:
86 86
 > filesystem.
87 87
 
88 88
 You can set the storage driver by passing the `--storage-driver=<name>` option
89
-to the `docker daemon` command line, or by setting the option on the
89
+to the `dockerd` command line, or by setting the option on the
90 90
 `DOCKER_OPTS` line in the `/etc/default/docker` file.
91 91
 
92 92
 The following command shows how to start the Docker daemon with the
93
-`devicemapper` storage driver using the `docker daemon` command:
93
+`devicemapper` storage driver using the `dockerd` command:
94 94
 
95
-    $ docker daemon --storage-driver=devicemapper &
95
+    $ dockerd --storage-driver=devicemapper &
96 96
 
97 97
     $ docker info
98 98
     Containers: 0
... ...
@@ -222,7 +222,7 @@ Once ZFS is installed and loaded, you're ready to configure ZFS for Docker.
222 222
     The procedure for starting the Docker daemon may differ depending on the
223 223
     Linux distribution you are using. It is possible to force the Docker daemon
224 224
     to start with the `zfs` storage driver by passing the 
225
-    `--storage-driver=zfs`flag to the `docker daemon` command, or to the 
225
+    `--storage-driver=zfs`flag to the `dockerd` command, or to the 
226 226
     `DOCKER_OPTS` line in the Docker config file.
227 227
 
228 228
 6. Verify that the daemon is using the `zfs` storage driver.
229 229
deleted file mode 100644
... ...
@@ -1,568 +0,0 @@
1
-% DOCKER(8) Docker User Manuals
2
-% Shishir Mahajan
3
-% SEPTEMBER 2015
4
-# NAME
5
-docker-daemon - Enable daemon mode
6
-
7
-# SYNOPSIS
8
-**docker daemon**
9
-[**--api-cors-header**=[=*API-CORS-HEADER*]]
10
-[**--authorization-plugin**[=*[]*]]
11
-[**-b**|**--bridge**[=*BRIDGE*]]
12
-[**--bip**[=*BIP*]]
13
-[**--cgroup-parent**[=*[]*]]
14
-[**--cluster-store**[=*[]*]]
15
-[**--cluster-advertise**[=*[]*]]
16
-[**--cluster-store-opt**[=*map[]*]]
17
-[**--config-file**[=*/etc/docker/daemon.json*]]
18
-[**--containerd**[=*SOCKET-PATH*]]
19
-[**-D**|**--debug**]
20
-[**--default-gateway**[=*DEFAULT-GATEWAY*]]
21
-[**--default-gateway-v6**[=*DEFAULT-GATEWAY-V6*]]
22
-[**--default-ulimit**[=*[]*]]
23
-[**--disable-legacy-registry**]
24
-[**--dns**[=*[]*]]
25
-[**--dns-opt**[=*[]*]]
26
-[**--dns-search**[=*[]*]]
27
-[**--exec-opt**[=*[]*]]
28
-[**--exec-root**[=*/var/run/docker*]]
29
-[**--fixed-cidr**[=*FIXED-CIDR*]]
30
-[**--fixed-cidr-v6**[=*FIXED-CIDR-V6*]]
31
-[**-G**|**--group**[=*docker*]]
32
-[**-g**|**--graph**[=*/var/lib/docker*]]
33
-[**-H**|**--host**[=*[]*]]
34
-[**--help**]
35
-[**--icc**[=*true*]]
36
-[**--insecure-registry**[=*[]*]]
37
-[**--ip**[=*0.0.0.0*]]
38
-[**--ip-forward**[=*true*]]
39
-[**--ip-masq**[=*true*]]
40
-[**--iptables**[=*true*]]
41
-[**--ipv6**]
42
-[**-l**|**--log-level**[=*info*]]
43
-[**--label**[=*[]*]]
44
-[**--log-driver**[=*json-file*]]
45
-[**--log-opt**[=*map[]*]]
46
-[**--mtu**[=*0*]]
47
-[**-p**|**--pidfile**[=*/var/run/docker.pid*]]
48
-[**--raw-logs**]
49
-[**--registry-mirror**[=*[]*]]
50
-[**-s**|**--storage-driver**[=*STORAGE-DRIVER*]]
51
-[**--selinux-enabled**]
52
-[**--storage-opt**[=*[]*]]
53
-[**--tls**]
54
-[**--tlscacert**[=*~/.docker/ca.pem*]]
55
-[**--tlscert**[=*~/.docker/cert.pem*]]
56
-[**--tlskey**[=*~/.docker/key.pem*]]
57
-[**--tlsverify**]
58
-[**--userland-proxy**[=*true*]]
59
-[**--userns-remap**[=*default*]]
60
-
61
-# DESCRIPTION
62
-**docker** has two distinct functions. It is used for starting the Docker
63
-daemon and to run the CLI (i.e., to command the daemon to manage images,
64
-containers etc.) So **docker** is both a server, as a daemon, and a client
65
-to the daemon, through the CLI.
66
-
67
-To run the Docker daemon you can specify **docker daemon**.
68
-You can check the daemon options using **docker daemon --help**.
69
-Daemon options should be specified after the **daemon** keyword in the following
70
-format.
71
-
72
-**docker daemon [OPTIONS]**
73
-
74
-# OPTIONS
75
-
76
-**--api-cors-header**=""
77
-  Set CORS headers in the remote API. Default is cors disabled. Give urls like "http://foo, http://bar, ...". Give "*" to allow all.
78
-
79
-**--authorization-plugin**=""
80
-  Set authorization plugins to load
81
-
82
-**-b**, **--bridge**=""
83
-  Attach containers to a pre\-existing network bridge; use 'none' to disable container networking
84
-
85
-**--bip**=""
86
-  Use the provided CIDR notation address for the dynamically created bridge (docker0); Mutually exclusive of \-b
87
-
88
-**--cgroup-parent**=""
89
-  Set parent cgroup for all containers. Default is "/docker" for fs cgroup driver and "system.slice" for systemd cgroup driver.
90
-
91
-**--cluster-store**=""
92
-  URL of the distributed storage backend
93
-
94
-**--cluster-advertise**=""
95
-  Specifies the 'host:port' or `interface:port` combination that this particular
96
-  daemon instance should use when advertising itself to the cluster. The daemon
97
-  is reached through this value.
98
-
99
-**--cluster-store-opt**=""
100
-  Specifies options for the Key/Value store.
101
-
102
-**--config-file**="/etc/docker/daemon.json"
103
-  Specifies the JSON file path to load the configuration from.
104
-
105
-**--containerd**=""
106
-  Path to containerd socket.
107
-
108
-**-D**, **--debug**=*true*|*false*
109
-  Enable debug mode. Default is false.
110
-
111
-**--default-gateway**=""
112
-  IPv4 address of the container default gateway; this address must be part of the bridge subnet (which is defined by \-b or \--bip)
113
-
114
-**--default-gateway-v6**=""
115
-  IPv6 address of the container default gateway
116
-
117
-**--default-ulimit**=[]
118
-  Set default ulimits for containers.
119
-
120
-**--disable-legacy-registry**=*true*|*false*
121
-  Do not contact legacy registries
122
-
123
-**--dns**=""
124
-  Force Docker to use specific DNS servers
125
-
126
-**--dns-opt**=""
127
-  DNS options to use.
128
-
129
-**--dns-search**=[]
130
-  DNS search domains to use.
131
-
132
-**--exec-opt**=[]
133
-  Set runtime execution options. See RUNTIME EXECUTION OPTIONS.
134
-
135
-**--exec-root**=""
136
-  Path to use as the root of the Docker execution state files. Default is `/var/run/docker`.
137
-
138
-**--fixed-cidr**=""
139
-  IPv4 subnet for fixed IPs (e.g., 10.20.0.0/16); this subnet must be nested in the bridge subnet (which is defined by \-b or \-\-bip)
140
-
141
-**--fixed-cidr-v6**=""
142
-  IPv6 subnet for global IPv6 addresses (e.g., 2a00:1450::/64)
143
-
144
-**-G**, **--group**=""
145
-  Group to assign the unix socket specified by -H when running in daemon mode.
146
-  use '' (the empty string) to disable setting of a group. Default is `docker`.
147
-
148
-**-g**, **--graph**=""
149
-  Path to use as the root of the Docker runtime. Default is `/var/lib/docker`.
150
-
151
-**-H**, **--host**=[*unix:///var/run/docker.sock*]: tcp://[host:port] to bind or
152
-unix://[/path/to/socket] to use.
153
-  The socket(s) to bind to in daemon mode specified using one or more
154
-  tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.
155
-
156
-**--help**
157
-  Print usage statement
158
-
159
-**--icc**=*true*|*false*
160
-  Allow unrestricted inter\-container and Docker daemon host communication. If disabled, containers can still be linked together using the **--link** option (see **docker-run(1)**). Default is true.
161
-
162
-**--insecure-registry**=[]
163
-  Enable insecure registry communication, i.e., enable un-encrypted and/or untrusted communication.
164
-
165
-  List of insecure registries can contain an element with CIDR notation to specify a whole subnet. Insecure registries accept HTTP and/or accept HTTPS with certificates from unknown CAs.
166
-
167
-  Enabling `--insecure-registry` is useful when running a local registry.  However, because its use creates security vulnerabilities it should ONLY be enabled for testing purposes.  For increased security, users should add their CA to their system's list of trusted CAs instead of using `--insecure-registry`.
168
-
169
-**--ip**=""
170
-  Default IP address to use when binding container ports. Default is `0.0.0.0`.
171
-
172
-**--ip-forward**=*true*|*false*
173
-  Enables IP forwarding on the Docker host. The default is `true`. This flag interacts with the IP forwarding setting on your host system's kernel. If your system has IP forwarding disabled, this setting enables it. If your system has IP forwarding enabled, setting this flag to `--ip-forward=false` has no effect.
174
-
175
-  This setting will also enable IPv6 forwarding if you have both `--ip-forward=true` and `--fixed-cidr-v6` set. Note that this may reject Router Advertisements and interfere with the host's existing IPv6 configuration. For more information, please consult the documentation about "Advanced Networking - IPv6".
176
-
177
-**--ip-masq**=*true*|*false*
178
-  Enable IP masquerading for bridge's IP range. Default is true.
179
-
180
-**--iptables**=*true*|*false*
181
-  Enable Docker's addition of iptables rules. Default is true.
182
-
183
-**--ipv6**=*true*|*false*
184
-  Enable IPv6 support. Default is false. Docker will create an IPv6-enabled bridge with address fe80::1 which will allow you to create IPv6-enabled containers. Use together with `--fixed-cidr-v6` to provide globally routable IPv6 addresses. IPv6 forwarding will be enabled if not used with `--ip-forward=false`. This may collide with your host's current IPv6 settings. For more information please consult the documentation about "Advanced Networking - IPv6".
185
-
186
-**-l**, **--log-level**="*debug*|*info*|*warn*|*error*|*fatal*"
187
-  Set the logging level. Default is `info`.
188
-
189
-**--label**="[]"
190
-  Set key=value labels to the daemon (displayed in `docker info`)
191
-
192
-**--log-driver**="*json-file*|*syslog*|*journald*|*gelf*|*fluentd*|*awslogs*|*splunk*|*etwlogs*|*gcplogs*|*none*"
193
-  Default driver for container logs. Default is `json-file`.
194
-  **Warning**: `docker logs` command works only for `json-file` logging driver.
195
-
196
-**--log-opt**=[]
197
-  Logging driver specific options.
198
-
199
-**--mtu**=*0*
200
-  Set the containers network mtu. Default is `0`.
201
-
202
-**-p**, **--pidfile**=""
203
-  Path to use for daemon PID file. Default is `/var/run/docker.pid`
204
-
205
-**--raw-logs**
206
-Output daemon logs in full timestamp format without ANSI coloring. If this flag is not set,
207
-the daemon outputs condensed, colorized logs if a terminal is detected, or full ("raw")
208
-output otherwise.
209
-
210
-**--registry-mirror**=*<scheme>://<host>*
211
-  Prepend a registry mirror to be used for image pulls. May be specified multiple times.
212
-
213
-**-s**, **--storage-driver**=""
214
-  Force the Docker runtime to use a specific storage driver.
215
-
216
-**--selinux-enabled**=*true*|*false*
217
-  Enable selinux support. Default is false. SELinux does not presently support the overlay storage driver.
218
-
219
-**--storage-opt**=[]
220
-  Set storage driver options. See STORAGE DRIVER OPTIONS.
221
-
222
-**--tls**=*true*|*false*
223
-  Use TLS; implied by --tlsverify. Default is false.
224
-
225
-**--tlscacert**=*~/.docker/ca.pem*
226
-  Trust certs signed only by this CA.
227
-
228
-**--tlscert**=*~/.docker/cert.pem*
229
-  Path to TLS certificate file.
230
-
231
-**--tlskey**=*~/.docker/key.pem*
232
-  Path to TLS key file.
233
-
234
-**--tlsverify**=*true*|*false*
235
-  Use TLS and verify the remote (daemon: verify client, client: verify daemon).
236
-  Default is false.
237
-
238
-**--userland-proxy**=*true*|*false*
239
-    Rely on a userland proxy implementation for inter-container and outside-to-container loopback communications. Default is true.
240
-
241
-**--userns-remap**=*default*|*uid:gid*|*user:group*|*user*|*uid*
242
-    Enable user namespaces for containers on the daemon. Specifying "default" will cause a new user and group to be created to handle UID and GID range remapping for the user namespace mappings used for contained processes. Specifying a user (or uid) and optionally a group (or gid) will cause the daemon to lookup the user and group's subordinate ID ranges for use as the user namespace mappings for contained processes.
243
-
244
-# STORAGE DRIVER OPTIONS
245
-
246
-Docker uses storage backends (known as "graphdrivers" in the Docker
247
-internals) to create writable containers from images.  Many of these
248
-backends use operating system level technologies and can be
249
-configured.
250
-
251
-Specify options to the storage backend with **--storage-opt** flags. The
252
-backends that currently take options are *devicemapper* and *zfs*.
253
-Options for *devicemapper* are prefixed with *dm* and options for *zfs*
254
-start with *zfs*.
255
-
256
-Specifically for devicemapper, the default is a "loopback" model which
257
-requires no pre-configuration, but is extremely inefficient.  Do not
258
-use it in production.
259
-
260
-To make the best use of Docker with the devicemapper backend, you must
261
-have a recent version of LVM.  Use `lvm` to create a thin pool; for
262
-more information see `man lvmthin`.  Then, use `--storage-opt
263
-dm.thinpooldev` to tell the Docker engine to use that pool for
264
-allocating images and container snapshots.
265
-
266
-## Devicemapper options
267
-
268
-#### dm.thinpooldev
269
-
270
-Specifies a custom block storage device to use for the thin pool.
271
-
272
-If using a block device for device mapper storage, it is best to use `lvm`
273
-to create and manage the thin-pool volume. This volume is then handed to Docker
274
-to exclusively create snapshot volumes needed for images and containers.
275
-
276
-Managing the thin-pool outside of Engine makes for the most feature-rich
277
-method of having Docker utilize device mapper thin provisioning as the
278
-backing storage for Docker containers. The highlights of the lvm-based
279
-thin-pool management feature include: automatic or interactive thin-pool
280
-resize support, dynamically changing thin-pool features, automatic thinp
281
-metadata checking when lvm activates the thin-pool, etc.
282
-
283
-As a fallback if no thin pool is provided, loopback files are
284
-created. Loopback is very slow, but can be used without any
285
-pre-configuration of storage. It is strongly recommended that you do
286
-not use loopback in production. Ensure your Engine daemon has a
287
-`--storage-opt dm.thinpooldev` argument provided.
288
-
289
-Example use:
290
-
291
-   $ docker daemon \
292
-         --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
293
-
294
-#### dm.basesize
295
-
296
-Specifies the size to use when creating the base device, which limits
297
-the size of images and containers. The default value is 10G. Note,
298
-thin devices are inherently "sparse", so a 10G device which is mostly
299
-empty doesn't use 10 GB of space on the pool. However, the filesystem
300
-will use more space for base images the larger the device
301
-is.
302
-
303
-The base device size can be increased at daemon restart which will allow
304
-all future images and containers (based on those new images) to be of the
305
-new base device size.
306
-
307
-Example use: `docker daemon --storage-opt dm.basesize=50G`
308
-
309
-This will increase the base device size to 50G. The Docker daemon will throw an
310
-error if existing base device size is larger than 50G. A user can use
311
-this option to expand the base device size however shrinking is not permitted.
312
-
313
-This value affects the system-wide "base" empty filesystem that may already
314
-be initialized and inherited by pulled images. Typically, a change to this
315
-value requires additional steps to take effect:
316
-
317
-        $ sudo service docker stop
318
-        $ sudo rm -rf /var/lib/docker
319
-        $ sudo service docker start
320
-
321
-Example use: `docker daemon --storage-opt dm.basesize=20G`
322
-
323
-#### dm.fs
324
-
325
-Specifies the filesystem type to use for the base device. The
326
-supported options are `ext4` and `xfs`. The default is `ext4`.
327
-
328
-Example use: `docker daemon --storage-opt dm.fs=xfs`
329
-
330
-#### dm.mkfsarg
331
-
332
-Specifies extra mkfs arguments to be used when creating the base device.
333
-
334
-Example use: `docker daemon --storage-opt "dm.mkfsarg=-O ^has_journal"`
335
-
336
-#### dm.mountopt
337
-
338
-Specifies extra mount options used when mounting the thin devices.
339
-
340
-Example use: `docker daemon --storage-opt dm.mountopt=nodiscard`
341
-
342
-#### dm.use_deferred_removal
343
-
344
-Enables use of deferred device removal if `libdm` and the kernel driver
345
-support the mechanism.
346
-
347
-Deferred device removal means that if device is busy when devices are
348
-being removed/deactivated, then a deferred removal is scheduled on
349
-device. And devices automatically go away when last user of the device
350
-exits.
351
-
352
-For example, when a container exits, its associated thin device is removed. If
353
-that device has leaked into some other mount namespace and can't be removed,
354
-the container exit still succeeds and this option causes the system to schedule
355
-the device for deferred removal. It does not wait in a loop trying to remove a busy
356
-device.
357
-
358
-Example use: `docker daemon --storage-opt dm.use_deferred_removal=true`
359
-
360
-#### dm.use_deferred_deletion
361
-
362
-Enables use of deferred device deletion for thin pool devices. By default,
363
-thin pool device deletion is synchronous. Before a container is deleted, the
364
-Docker daemon removes any associated devices. If the storage driver can not
365
-remove a device, the container deletion fails and daemon returns.
366
-
367
-`Error deleting container: Error response from daemon: Cannot destroy container`
368
-
369
-To avoid this failure, enable both deferred device deletion and deferred
370
-device removal on the daemon.
371
-
372
-`docker daemon --storage-opt dm.use_deferred_deletion=true --storage-opt dm.use_deferred_removal=true`
373
-
374
-With these two options enabled, if a device is busy when the driver is
375
-deleting a container, the driver marks the device as deleted. Later, when the
376
-device isn't in use, the driver deletes it.
377
-
378
-In general it should be safe to enable this option by default. It will help
379
-when unintentional leaking of mount point happens across multiple mount
380
-namespaces.
381
-
382
-#### dm.loopdatasize
383
-
384
-**Note**: This option configures devicemapper loopback, which should not be used in production.
385
-
386
-Specifies the size to use when creating the loopback file for the
387
-"data" device which is used for the thin pool. The default size is
388
-100G. The file is sparse, so it will not initially take up
389
-this much space.
390
-
391
-Example use: `docker daemon --storage-opt dm.loopdatasize=200G`
392
-
393
-#### dm.loopmetadatasize
394
-
395
-**Note**: This option configures devicemapper loopback, which should not be used in production.
396
-
397
-Specifies the size to use when creating the loopback file for the
398
-"metadata" device which is used for the thin pool. The default size
399
-is 2G. The file is sparse, so it will not initially take up
400
-this much space.
401
-
402
-Example use: `docker daemon --storage-opt dm.loopmetadatasize=4G`
403
-
404
-#### dm.datadev
405
-
406
-(Deprecated, use `dm.thinpooldev`)
407
-
408
-Specifies a custom blockdevice to use for data for a
409
-Docker-managed thin pool.  It is better to use `dm.thinpooldev` - see
410
-the documentation for it above for discussion of the advantages.
411
-
412
-#### dm.metadatadev
413
-
414
-(Deprecated, use `dm.thinpooldev`)
415
-
416
-Specifies a custom blockdevice to use for metadata for a
417
-Docker-managed thin pool.  See `dm.datadev` for why this is
418
-deprecated.
419
-
420
-#### dm.blocksize
421
-
422
-Specifies a custom blocksize to use for the thin pool.  The default
423
-blocksize is 64K.
424
-
425
-Example use: `docker daemon --storage-opt dm.blocksize=512K`
426
-
427
-#### dm.blkdiscard
428
-
429
-Enables or disables the use of `blkdiscard` when removing devicemapper
430
-devices.  This is disabled by default due to the additional latency,
431
-but as a special case with loopback devices it will be enabled, in
432
-order to re-sparsify the loopback file on image/container removal.
433
-
434
-Disabling this on loopback can lead to *much* faster container removal
435
-times, but it also prevents the space used in `/var/lib/docker` directory
436
-from being returned to the system for other use when containers are
437
-removed.
438
-
439
-Example use: `docker daemon --storage-opt dm.blkdiscard=false`
440
-
441
-#### dm.override_udev_sync_check
442
-
443
-By default, the devicemapper backend attempts to synchronize with the
444
-`udev` device manager for the Linux kernel.  This option allows
445
-disabling that synchronization, to continue even though the
446
-configuration may be buggy.
447
-
448
-To view the `udev` sync support of a Docker daemon that is using the
449
-`devicemapper` driver, run:
450
-
451
-        $ docker info
452
-        [...]
453
-         Udev Sync Supported: true
454
-        [...]
455
-
456
-When `udev` sync support is `true`, then `devicemapper` and `udev` can
457
-coordinate the activation and deactivation of devices for containers.
458
-
459
-When `udev` sync support is `false`, a race condition occurs between
460
-the `devicemapper` and `udev` during create and cleanup. The race
461
-condition results in errors and failures. (For information on these
462
-failures, see
463
-[docker#4036](https://github.com/docker/docker/issues/4036))
464
-
465
-To allow the `docker` daemon to start, regardless of whether `udev` sync is
466
-`false`, set `dm.override_udev_sync_check` to true:
467
-
468
-        $ docker daemon --storage-opt dm.override_udev_sync_check=true
469
-
470
-When this value is `true`, the driver continues and simply warns you
471
-the errors are happening.
472
-
473
-**Note**: The ideal is to pursue a `docker` daemon and environment
474
-that does support synchronizing with `udev`. For further discussion on
475
-this topic, see
476
-[docker#4036](https://github.com/docker/docker/issues/4036).
477
-Otherwise, set this flag for migrating existing Docker daemons to a
478
-daemon with a supported environment.
479
-
480
-#### dm.min_free_space
481
-
482
-Specifies the min free space percent in a thin pool require for new device
483
-creation to succeed. This check applies to both free data space as well
484
-as free metadata space. Valid values are from 0% - 99%. Value 0% disables
485
-free space checking logic. If user does not specify a value for this option,
486
-the Engine uses a default value of 10%.
487
-
488
-Whenever a new a thin pool device is created (during `docker pull` or during
489
-container creation), the Engine checks if the minimum free space is
490
-available. If the space is unavailable, then device creation fails and any
491
-relevant `docker` operation fails.
492
-
493
-To recover from this error, you must create more free space in the thin pool to
494
-recover from the error. You can create free space by deleting some images
495
-and containers from tge thin pool. You can also add
496
-more storage to the thin pool.
497
-
498
-To add more space to an LVM (logical volume management) thin pool, just add
499
-more storage to the  group container thin pool; this should automatically
500
-resolve any errors. If your configuration uses loop devices, then stop the
501
-Engine daemon, grow the size of loop files and restart the daemon to resolve
502
-the issue.
503
-
504
-Example use:: `docker daemon --storage-opt dm.min_free_space=10%`
505
-
506
-## ZFS options
507
-
508
-#### zfs.fsname
509
-
510
-Set zfs filesystem under which docker will create its own datasets.
511
-By default docker will pick up the zfs filesystem where docker graph
512
-(`/var/lib/docker`) is located.
513
-
514
-Example use: `docker daemon -s zfs --storage-opt zfs.fsname=zroot/docker`
515
-
516
-# CLUSTER STORE OPTIONS
517
-
518
-The daemon uses libkv to advertise
519
-the node within the cluster.  Some Key/Value backends support mutual
520
-TLS, and the client TLS settings used by the daemon can be configured
521
-using the **--cluster-store-opt** flag, specifying the paths to PEM encoded
522
-files.
523
-
524
-#### kv.cacertfile
525
-
526
-Specifies the path to a local file with PEM encoded CA certificates to trust
527
-
528
-#### kv.certfile
529
-
530
-Specifies the path to a local file with a PEM encoded certificate.  This
531
-certificate is used as the client cert for communication with the
532
-Key/Value store.
533
-
534
-#### kv.keyfile
535
-
536
-Specifies the path to a local file with a PEM encoded private key.  This
537
-private key is used as the client key for communication with the
538
-Key/Value store.
539
-
540
-# Access authorization
541
-
542
-Docker's access authorization can be extended by authorization plugins that your
543
-organization can purchase or build themselves. You can install one or more
544
-authorization plugins when you start the Docker `daemon` using the
545
-`--authorization-plugin=PLUGIN_ID` option.
546
-
547
-```bash
548
-docker daemon --authorization-plugin=plugin1 --authorization-plugin=plugin2,...
549
-```
550
-
551
-The `PLUGIN_ID` value is either the plugin's name or a path to its specification
552
-file. The plugin's implementation determines whether you can specify a name or
553
-path. Consult with your Docker administrator to get information about the
554
-plugins available to you.
555
-
556
-Once a plugin is installed, requests made to the `daemon` through the command
557
-line or Docker's remote API are allowed or denied by the plugin.  If you have
558
-multiple plugins installed, at least one must allow the request for it to
559
-complete.
560
-
561
-For information about how to create an authorization plugin, see [authorization
562
-plugin](https://docs.docker.com/engine/extend/authorization/) section in the
563
-Docker extend section of this documentation.
564
-
565
-
566
-# HISTORY
567
-Sept 2015, Originally compiled by Shishir Mahajan <shishir.mahajan@redhat.com>
568
-based on docker.com source material and internal work.
... ...
@@ -46,7 +46,7 @@ conditions are:
46 46
 * A cluster of hosts with connectivity to the key-value store.
47 47
 * A properly configured Engine `daemon` on each host in the cluster.
48 48
 
49
-The `docker daemon` options that support the `overlay` network are:
49
+The `dockerd` options that support the `overlay` network are:
50 50
 
51 51
 * `--cluster-store`
52 52
 * `--cluster-store-opt`
... ...
@@ -12,14 +12,7 @@ docker \- Docker image and container command line interface
12 12
 **docker** [--help|-v|--version]
13 13
 
14 14
 # DESCRIPTION
15
-**docker** has two distinct functions. It is used for starting the Docker
16
-daemon and to run the CLI (i.e., to command the daemon to manage images,
17
-containers etc.) So **docker** is both a server, as a daemon, and a client
18
-to the daemon, through the CLI.
19
-
20
-To run the Docker daemon you can specify **docker daemon**.
21
-You can view the daemon options using **docker daemon --help**.
22
-To see the man page for the daemon, run **man docker daemon**.
15
+is a client for interacting with the daemon (see **dockerd(8)**) through the CLI.
23 16
 
24 17
 The Docker CLI has over 30 commands. The commands are listed below and each has
25 18
 its own man page which explain usage and arguments.
26 19
new file mode 100644
... ...
@@ -0,0 +1,566 @@
0
+% DOCKER(8) Docker User Manuals
1
+% Shishir Mahajan
2
+% SEPTEMBER 2015
3
+# NAME
4
+dockerd - Enable daemon mode
5
+
6
+# SYNOPSIS
7
+**dockerd**
8
+[**--api-cors-header**=[=*API-CORS-HEADER*]]
9
+[**--authorization-plugin**[=*[]*]]
10
+[**-b**|**--bridge**[=*BRIDGE*]]
11
+[**--bip**[=*BIP*]]
12
+[**--cgroup-parent**[=*[]*]]
13
+[**--cluster-store**[=*[]*]]
14
+[**--cluster-advertise**[=*[]*]]
15
+[**--cluster-store-opt**[=*map[]*]]
16
+[**--config-file**[=*/etc/docker/daemon.json*]]
17
+[**--containerd**[=*SOCKET-PATH*]]
18
+[**-D**|**--debug**]
19
+[**--default-gateway**[=*DEFAULT-GATEWAY*]]
20
+[**--default-gateway-v6**[=*DEFAULT-GATEWAY-V6*]]
21
+[**--default-ulimit**[=*[]*]]
22
+[**--disable-legacy-registry**]
23
+[**--dns**[=*[]*]]
24
+[**--dns-opt**[=*[]*]]
25
+[**--dns-search**[=*[]*]]
26
+[**--exec-opt**[=*[]*]]
27
+[**--exec-root**[=*/var/run/docker*]]
28
+[**--fixed-cidr**[=*FIXED-CIDR*]]
29
+[**--fixed-cidr-v6**[=*FIXED-CIDR-V6*]]
30
+[**-G**|**--group**[=*docker*]]
31
+[**-g**|**--graph**[=*/var/lib/docker*]]
32
+[**-H**|**--host**[=*[]*]]
33
+[**--help**]
34
+[**--icc**[=*true*]]
35
+[**--insecure-registry**[=*[]*]]
36
+[**--ip**[=*0.0.0.0*]]
37
+[**--ip-forward**[=*true*]]
38
+[**--ip-masq**[=*true*]]
39
+[**--iptables**[=*true*]]
40
+[**--ipv6**]
41
+[**-l**|**--log-level**[=*info*]]
42
+[**--label**[=*[]*]]
43
+[**--log-driver**[=*json-file*]]
44
+[**--log-opt**[=*map[]*]]
45
+[**--mtu**[=*0*]]
46
+[**-p**|**--pidfile**[=*/var/run/docker.pid*]]
47
+[**--raw-logs**]
48
+[**--registry-mirror**[=*[]*]]
49
+[**-s**|**--storage-driver**[=*STORAGE-DRIVER*]]
50
+[**--selinux-enabled**]
51
+[**--storage-opt**[=*[]*]]
52
+[**--tls**]
53
+[**--tlscacert**[=*~/.docker/ca.pem*]]
54
+[**--tlscert**[=*~/.docker/cert.pem*]]
55
+[**--tlskey**[=*~/.docker/key.pem*]]
56
+[**--tlsverify**]
57
+[**--userland-proxy**[=*true*]]
58
+[**--userns-remap**[=*default*]]
59
+
60
+# DESCRIPTION
61
+**dockerd** is used for starting the Docker daemon(i.e., to command the daemon to manage images,
62
+containers etc.) So **dockerd** is a server, as a daemon.
63
+
64
+To run the Docker daemon you can specify **dockerd**.
65
+You can check the daemon options using **dockerd --help**.
66
+Daemon options should be specified after the **dockerd** keyword in the following
67
+format.
68
+
69
+**dockerd [OPTIONS]**
70
+
71
+# OPTIONS
72
+
73
+**--api-cors-header**=""
74
+  Set CORS headers in the remote API. Default is cors disabled. Give urls like "http://foo, http://bar, ...". Give "*" to allow all.
75
+
76
+**--authorization-plugin**=""
77
+  Set authorization plugins to load
78
+
79
+**-b**, **--bridge**=""
80
+  Attach containers to a pre\-existing network bridge; use 'none' to disable container networking
81
+
82
+**--bip**=""
83
+  Use the provided CIDR notation address for the dynamically created bridge (docker0); Mutually exclusive of \-b
84
+
85
+**--cgroup-parent**=""
86
+  Set parent cgroup for all containers. Default is "/docker" for fs cgroup driver and "system.slice" for systemd cgroup driver.
87
+
88
+**--cluster-store**=""
89
+  URL of the distributed storage backend
90
+
91
+**--cluster-advertise**=""
92
+  Specifies the 'host:port' or `interface:port` combination that this particular
93
+  daemon instance should use when advertising itself to the cluster. The daemon
94
+  is reached through this value.
95
+
96
+**--cluster-store-opt**=""
97
+  Specifies options for the Key/Value store.
98
+
99
+**--config-file**="/etc/docker/daemon.json"
100
+  Specifies the JSON file path to load the configuration from.
101
+
102
+**--containerd**=""
103
+  Path to containerd socket.
104
+
105
+**-D**, **--debug**=*true*|*false*
106
+  Enable debug mode. Default is false.
107
+
108
+**--default-gateway**=""
109
+  IPv4 address of the container default gateway; this address must be part of the bridge subnet (which is defined by \-b or \--bip)
110
+
111
+**--default-gateway-v6**=""
112
+  IPv6 address of the container default gateway
113
+
114
+**--default-ulimit**=[]
115
+  Set default ulimits for containers.
116
+
117
+**--disable-legacy-registry**=*true*|*false*
118
+  Do not contact legacy registries
119
+
120
+**--dns**=""
121
+  Force Docker to use specific DNS servers
122
+
123
+**--dns-opt**=""
124
+  DNS options to use.
125
+
126
+**--dns-search**=[]
127
+  DNS search domains to use.
128
+
129
+**--exec-opt**=[]
130
+  Set runtime execution options. See RUNTIME EXECUTION OPTIONS.
131
+
132
+**--exec-root**=""
133
+  Path to use as the root of the Docker execution state files. Default is `/var/run/docker`.
134
+
135
+**--fixed-cidr**=""
136
+  IPv4 subnet for fixed IPs (e.g., 10.20.0.0/16); this subnet must be nested in the bridge subnet (which is defined by \-b or \-\-bip)
137
+
138
+**--fixed-cidr-v6**=""
139
+  IPv6 subnet for global IPv6 addresses (e.g., 2a00:1450::/64)
140
+
141
+**-G**, **--group**=""
142
+  Group to assign the unix socket specified by -H when running in daemon mode.
143
+  use '' (the empty string) to disable setting of a group. Default is `docker`.
144
+
145
+**-g**, **--graph**=""
146
+  Path to use as the root of the Docker runtime. Default is `/var/lib/docker`.
147
+
148
+**-H**, **--host**=[*unix:///var/run/docker.sock*]: tcp://[host:port] to bind or
149
+unix://[/path/to/socket] to use.
150
+  The socket(s) to bind to in daemon mode specified using one or more
151
+  tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.
152
+
153
+**--help**
154
+  Print usage statement
155
+
156
+**--icc**=*true*|*false*
157
+  Allow unrestricted inter\-container and Docker daemon host communication. If disabled, containers can still be linked together using the **--link** option (see **docker-run(1)**). Default is true.
158
+
159
+**--insecure-registry**=[]
160
+  Enable insecure registry communication, i.e., enable un-encrypted and/or untrusted communication.
161
+
162
+  List of insecure registries can contain an element with CIDR notation to specify a whole subnet. Insecure registries accept HTTP and/or accept HTTPS with certificates from unknown CAs.
163
+
164
+  Enabling `--insecure-registry` is useful when running a local registry.  However, because its use creates security vulnerabilities it should ONLY be enabled for testing purposes.  For increased security, users should add their CA to their system's list of trusted CAs instead of using `--insecure-registry`.
165
+
166
+**--ip**=""
167
+  Default IP address to use when binding container ports. Default is `0.0.0.0`.
168
+
169
+**--ip-forward**=*true*|*false*
170
+  Enables IP forwarding on the Docker host. The default is `true`. This flag interacts with the IP forwarding setting on your host system's kernel. If your system has IP forwarding disabled, this setting enables it. If your system has IP forwarding enabled, setting this flag to `--ip-forward=false` has no effect.
171
+
172
+  This setting will also enable IPv6 forwarding if you have both `--ip-forward=true` and `--fixed-cidr-v6` set. Note that this may reject Router Advertisements and interfere with the host's existing IPv6 configuration. For more information, please consult the documentation about "Advanced Networking - IPv6".
173
+
174
+**--ip-masq**=*true*|*false*
175
+  Enable IP masquerading for bridge's IP range. Default is true.
176
+
177
+**--iptables**=*true*|*false*
178
+  Enable Docker's addition of iptables rules. Default is true.
179
+
180
+**--ipv6**=*true*|*false*
181
+  Enable IPv6 support. Default is false. Docker will create an IPv6-enabled bridge with address fe80::1 which will allow you to create IPv6-enabled containers. Use together with `--fixed-cidr-v6` to provide globally routable IPv6 addresses. IPv6 forwarding will be enabled if not used with `--ip-forward=false`. This may collide with your host's current IPv6 settings. For more information please consult the documentation about "Advanced Networking - IPv6".
182
+
183
+**-l**, **--log-level**="*debug*|*info*|*warn*|*error*|*fatal*"
184
+  Set the logging level. Default is `info`.
185
+
186
+**--label**="[]"
187
+  Set key=value labels to the daemon (displayed in `docker info`)
188
+
189
+**--log-driver**="*json-file*|*syslog*|*journald*|*gelf*|*fluentd*|*awslogs*|*splunk*|*etwlogs*|*gcplogs*|*none*"
190
+  Default driver for container logs. Default is `json-file`.
191
+  **Warning**: `docker logs` command works only for `json-file` logging driver.
192
+
193
+**--log-opt**=[]
194
+  Logging driver specific options.
195
+
196
+**--mtu**=*0*
197
+  Set the containers network mtu. Default is `0`.
198
+
199
+**-p**, **--pidfile**=""
200
+  Path to use for daemon PID file. Default is `/var/run/docker.pid`
201
+
202
+**--raw-logs**
203
+Output daemon logs in full timestamp format without ANSI coloring. If this flag is not set,
204
+the daemon outputs condensed, colorized logs if a terminal is detected, or full ("raw")
205
+output otherwise.
206
+
207
+**--registry-mirror**=*<scheme>://<host>*
208
+  Prepend a registry mirror to be used for image pulls. May be specified multiple times.
209
+
210
+**-s**, **--storage-driver**=""
211
+  Force the Docker runtime to use a specific storage driver.
212
+
213
+**--selinux-enabled**=*true*|*false*
214
+  Enable selinux support. Default is false. SELinux does not presently support the overlay storage driver.
215
+
216
+**--storage-opt**=[]
217
+  Set storage driver options. See STORAGE DRIVER OPTIONS.
218
+
219
+**--tls**=*true*|*false*
220
+  Use TLS; implied by --tlsverify. Default is false.
221
+
222
+**--tlscacert**=*~/.docker/ca.pem*
223
+  Trust certs signed only by this CA.
224
+
225
+**--tlscert**=*~/.docker/cert.pem*
226
+  Path to TLS certificate file.
227
+
228
+**--tlskey**=*~/.docker/key.pem*
229
+  Path to TLS key file.
230
+
231
+**--tlsverify**=*true*|*false*
232
+  Use TLS and verify the remote (daemon: verify client, client: verify daemon).
233
+  Default is false.
234
+
235
+**--userland-proxy**=*true*|*false*
236
+    Rely on a userland proxy implementation for inter-container and outside-to-container loopback communications. Default is true.
237
+
238
+**--userns-remap**=*default*|*uid:gid*|*user:group*|*user*|*uid*
239
+    Enable user namespaces for containers on the daemon. Specifying "default" will cause a new user and group to be created to handle UID and GID range remapping for the user namespace mappings used for contained processes. Specifying a user (or uid) and optionally a group (or gid) will cause the daemon to lookup the user and group's subordinate ID ranges for use as the user namespace mappings for contained processes.
240
+
241
+# STORAGE DRIVER OPTIONS
242
+
243
+Docker uses storage backends (known as "graphdrivers" in the Docker
244
+internals) to create writable containers from images.  Many of these
245
+backends use operating system level technologies and can be
246
+configured.
247
+
248
+Specify options to the storage backend with **--storage-opt** flags. The
249
+backends that currently take options are *devicemapper* and *zfs*.
250
+Options for *devicemapper* are prefixed with *dm* and options for *zfs*
251
+start with *zfs*.
252
+
253
+Specifically for devicemapper, the default is a "loopback" model which
254
+requires no pre-configuration, but is extremely inefficient.  Do not
255
+use it in production.
256
+
257
+To make the best use of Docker with the devicemapper backend, you must
258
+have a recent version of LVM.  Use `lvm` to create a thin pool; for
259
+more information see `man lvmthin`.  Then, use `--storage-opt
260
+dm.thinpooldev` to tell the Docker engine to use that pool for
261
+allocating images and container snapshots.
262
+
263
+## Devicemapper options
264
+
265
+#### dm.thinpooldev
266
+
267
+Specifies a custom block storage device to use for the thin pool.
268
+
269
+If using a block device for device mapper storage, it is best to use `lvm`
270
+to create and manage the thin-pool volume. This volume is then handed to Docker
271
+to exclusively create snapshot volumes needed for images and containers.
272
+
273
+Managing the thin-pool outside of Engine makes for the most feature-rich
274
+method of having Docker utilize device mapper thin provisioning as the
275
+backing storage for Docker containers. The highlights of the lvm-based
276
+thin-pool management feature include: automatic or interactive thin-pool
277
+resize support, dynamically changing thin-pool features, automatic thinp
278
+metadata checking when lvm activates the thin-pool, etc.
279
+
280
+As a fallback if no thin pool is provided, loopback files are
281
+created. Loopback is very slow, but can be used without any
282
+pre-configuration of storage. It is strongly recommended that you do
283
+not use loopback in production. Ensure your Engine daemon has a
284
+`--storage-opt dm.thinpooldev` argument provided.
285
+
286
+Example use:
287
+
288
+   $ dockerd \
289
+         --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
290
+
291
+#### dm.basesize
292
+
293
+Specifies the size to use when creating the base device, which limits
294
+the size of images and containers. The default value is 10G. Note,
295
+thin devices are inherently "sparse", so a 10G device which is mostly
296
+empty doesn't use 10 GB of space on the pool. However, the filesystem
297
+will use more space for base images the larger the device
298
+is.
299
+
300
+The base device size can be increased at daemon restart which will allow
301
+all future images and containers (based on those new images) to be of the
302
+new base device size.
303
+
304
+Example use: `dockerd --storage-opt dm.basesize=50G`
305
+
306
+This will increase the base device size to 50G. The Docker daemon will throw an
307
+error if existing base device size is larger than 50G. A user can use
308
+this option to expand the base device size however shrinking is not permitted.
309
+
310
+This value affects the system-wide "base" empty filesystem that may already
311
+be initialized and inherited by pulled images. Typically, a change to this
312
+value requires additional steps to take effect:
313
+
314
+        $ sudo service docker stop
315
+        $ sudo rm -rf /var/lib/docker
316
+        $ sudo service docker start
317
+
318
+Example use: `dockerd --storage-opt dm.basesize=20G`
319
+
320
+#### dm.fs
321
+
322
+Specifies the filesystem type to use for the base device. The
323
+supported options are `ext4` and `xfs`. The default is `ext4`.
324
+
325
+Example use: `dockerd --storage-opt dm.fs=xfs`
326
+
327
+#### dm.mkfsarg
328
+
329
+Specifies extra mkfs arguments to be used when creating the base device.
330
+
331
+Example use: `dockerd --storage-opt "dm.mkfsarg=-O ^has_journal"`
332
+
333
+#### dm.mountopt
334
+
335
+Specifies extra mount options used when mounting the thin devices.
336
+
337
+Example use: `dockerd --storage-opt dm.mountopt=nodiscard`
338
+
339
+#### dm.use_deferred_removal
340
+
341
+Enables use of deferred device removal if `libdm` and the kernel driver
342
+support the mechanism.
343
+
344
+Deferred device removal means that if device is busy when devices are
345
+being removed/deactivated, then a deferred removal is scheduled on
346
+device. And devices automatically go away when last user of the device
347
+exits.
348
+
349
+For example, when a container exits, its associated thin device is removed. If
350
+that device has leaked into some other mount namespace and can't be removed,
351
+the container exit still succeeds and this option causes the system to schedule
352
+the device for deferred removal. It does not wait in a loop trying to remove a busy
353
+device.
354
+
355
+Example use: `dockerd --storage-opt dm.use_deferred_removal=true`
356
+
357
+#### dm.use_deferred_deletion
358
+
359
+Enables use of deferred device deletion for thin pool devices. By default,
360
+thin pool device deletion is synchronous. Before a container is deleted, the
361
+Docker daemon removes any associated devices. If the storage driver can not
362
+remove a device, the container deletion fails and daemon returns.
363
+
364
+`Error deleting container: Error response from daemon: Cannot destroy container`
365
+
366
+To avoid this failure, enable both deferred device deletion and deferred
367
+device removal on the daemon.
368
+
369
+`dockerd --storage-opt dm.use_deferred_deletion=true --storage-opt dm.use_deferred_removal=true`
370
+
371
+With these two options enabled, if a device is busy when the driver is
372
+deleting a container, the driver marks the device as deleted. Later, when the
373
+device isn't in use, the driver deletes it.
374
+
375
+In general it should be safe to enable this option by default. It will help
376
+when unintentional leaking of mount point happens across multiple mount
377
+namespaces.
378
+
379
+#### dm.loopdatasize
380
+
381
+**Note**: This option configures devicemapper loopback, which should not be used in production.
382
+
383
+Specifies the size to use when creating the loopback file for the
384
+"data" device which is used for the thin pool. The default size is
385
+100G. The file is sparse, so it will not initially take up
386
+this much space.
387
+
388
+Example use: `dockerd --storage-opt dm.loopdatasize=200G`
389
+
390
+#### dm.loopmetadatasize
391
+
392
+**Note**: This option configures devicemapper loopback, which should not be used in production.
393
+
394
+Specifies the size to use when creating the loopback file for the
395
+"metadata" device which is used for the thin pool. The default size
396
+is 2G. The file is sparse, so it will not initially take up
397
+this much space.
398
+
399
+Example use: `dockerd --storage-opt dm.loopmetadatasize=4G`
400
+
401
+#### dm.datadev
402
+
403
+(Deprecated, use `dm.thinpooldev`)
404
+
405
+Specifies a custom blockdevice to use for data for a
406
+Docker-managed thin pool.  It is better to use `dm.thinpooldev` - see
407
+the documentation for it above for discussion of the advantages.
408
+
409
+#### dm.metadatadev
410
+
411
+(Deprecated, use `dm.thinpooldev`)
412
+
413
+Specifies a custom blockdevice to use for metadata for a
414
+Docker-managed thin pool.  See `dm.datadev` for why this is
415
+deprecated.
416
+
417
+#### dm.blocksize
418
+
419
+Specifies a custom blocksize to use for the thin pool.  The default
420
+blocksize is 64K.
421
+
422
+Example use: `dockerd --storage-opt dm.blocksize=512K`
423
+
424
+#### dm.blkdiscard
425
+
426
+Enables or disables the use of `blkdiscard` when removing devicemapper
427
+devices.  This is disabled by default due to the additional latency,
428
+but as a special case with loopback devices it will be enabled, in
429
+order to re-sparsify the loopback file on image/container removal.
430
+
431
+Disabling this on loopback can lead to *much* faster container removal
432
+times, but it also prevents the space used in `/var/lib/docker` directory
433
+from being returned to the system for other use when containers are
434
+removed.
435
+
436
+Example use: `dockerd --storage-opt dm.blkdiscard=false`
437
+
438
+#### dm.override_udev_sync_check
439
+
440
+By default, the devicemapper backend attempts to synchronize with the
441
+`udev` device manager for the Linux kernel.  This option allows
442
+disabling that synchronization, to continue even though the
443
+configuration may be buggy.
444
+
445
+To view the `udev` sync support of a Docker daemon that is using the
446
+`devicemapper` driver, run:
447
+
448
+        $ docker info
449
+        [...]
450
+         Udev Sync Supported: true
451
+        [...]
452
+
453
+When `udev` sync support is `true`, then `devicemapper` and `udev` can
454
+coordinate the activation and deactivation of devices for containers.
455
+
456
+When `udev` sync support is `false`, a race condition occurs between
457
+the `devicemapper` and `udev` during create and cleanup. The race
458
+condition results in errors and failures. (For information on these
459
+failures, see
460
+[docker#4036](https://github.com/docker/docker/issues/4036))
461
+
462
+To allow the `docker` daemon to start, regardless of whether `udev` sync is
463
+`false`, set `dm.override_udev_sync_check` to true:
464
+
465
+        $ dockerd --storage-opt dm.override_udev_sync_check=true
466
+
467
+When this value is `true`, the driver continues and simply warns you
468
+the errors are happening.
469
+
470
+**Note**: The ideal is to pursue a `docker` daemon and environment
471
+that does support synchronizing with `udev`. For further discussion on
472
+this topic, see
473
+[docker#4036](https://github.com/docker/docker/issues/4036).
474
+Otherwise, set this flag for migrating existing Docker daemons to a
475
+daemon with a supported environment.
476
+
477
+#### dm.min_free_space
478
+
479
+Specifies the min free space percent in a thin pool require for new device
480
+creation to succeed. This check applies to both free data space as well
481
+as free metadata space. Valid values are from 0% - 99%. Value 0% disables
482
+free space checking logic. If user does not specify a value for this option,
483
+the Engine uses a default value of 10%.
484
+
485
+Whenever a new a thin pool device is created (during `docker pull` or during
486
+container creation), the Engine checks if the minimum free space is
487
+available. If the space is unavailable, then device creation fails and any
488
+relevant `docker` operation fails.
489
+
490
+To recover from this error, you must create more free space in the thin pool to
491
+recover from the error. You can create free space by deleting some images
492
+and containers from tge thin pool. You can also add
493
+more storage to the thin pool.
494
+
495
+To add more space to an LVM (logical volume management) thin pool, just add
496
+more storage to the  group container thin pool; this should automatically
497
+resolve any errors. If your configuration uses loop devices, then stop the
498
+Engine daemon, grow the size of loop files and restart the daemon to resolve
499
+the issue.
500
+
501
+Example use:: `dockerd --storage-opt dm.min_free_space=10%`
502
+
503
+## ZFS options
504
+
505
+#### zfs.fsname
506
+
507
+Set zfs filesystem under which docker will create its own datasets.
508
+By default docker will pick up the zfs filesystem where docker graph
509
+(`/var/lib/docker`) is located.
510
+
511
+Example use: `dockerd -s zfs --storage-opt zfs.fsname=zroot/docker`
512
+
513
+# CLUSTER STORE OPTIONS
514
+
515
+The daemon uses libkv to advertise
516
+the node within the cluster.  Some Key/Value backends support mutual
517
+TLS, and the client TLS settings used by the daemon can be configured
518
+using the **--cluster-store-opt** flag, specifying the paths to PEM encoded
519
+files.
520
+
521
+#### kv.cacertfile
522
+
523
+Specifies the path to a local file with PEM encoded CA certificates to trust
524
+
525
+#### kv.certfile
526
+
527
+Specifies the path to a local file with a PEM encoded certificate.  This
528
+certificate is used as the client cert for communication with the
529
+Key/Value store.
530
+
531
+#### kv.keyfile
532
+
533
+Specifies the path to a local file with a PEM encoded private key.  This
534
+private key is used as the client key for communication with the
535
+Key/Value store.
536
+
537
+# Access authorization
538
+
539
+Docker's access authorization can be extended by authorization plugins that your
540
+organization can purchase or build themselves. You can install one or more
541
+authorization plugins when you start the Docker `daemon` using the
542
+`--authorization-plugin=PLUGIN_ID` option.
543
+
544
+```bash
545
+dockerd --authorization-plugin=plugin1 --authorization-plugin=plugin2,...
546
+```
547
+
548
+The `PLUGIN_ID` value is either the plugin's name or a path to its specification
549
+file. The plugin's implementation determines whether you can specify a name or
550
+path. Consult with your Docker administrator to get information about the
551
+plugins available to you.
552
+
553
+Once a plugin is installed, requests made to the `daemon` through the command
554
+line or Docker's remote API are allowed or denied by the plugin.  If you have
555
+multiple plugins installed, at least one must allow the request for it to
556
+complete.
557
+
558
+For information about how to create an authorization plugin, see [authorization
559
+plugin](https://docs.docker.com/engine/extend/authorization/) section in the
560
+Docker extend section of this documentation.
561
+
562
+
563
+# HISTORY
564
+Sept 2015, Originally compiled by Shishir Mahajan <shishir.mahajan@redhat.com>
565
+based on docker.com source material and internal work.