github.com/ld86/docker@v1.7.1-rc3/docs/reference/commandline/daemon.md (about) 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 +++ 9 <![end-metadata]--> 10 11 # daemon 12 13 Usage: docker [OPTIONS] COMMAND [arg...] 14 15 A self-sufficient runtime for linux containers. 16 17 Options: 18 --api-cors-header="" Set CORS headers in the remote API 19 -b, --bridge="" Attach containers to a network bridge 20 --bip="" Specify network bridge IP 21 -D, --debug=false Enable debug mode 22 -d, --daemon=false Enable daemon mode 23 --default-gateway="" Container default gateway IPv4 address 24 --default-gateway-v6="" Container default gateway IPv6 address 25 --dns=[] DNS server to use 26 --dns-search=[] DNS search domains to use 27 --default-ulimit=[] Set default ulimit settings for containers 28 -e, --exec-driver="native" Exec driver to use 29 --exec-opt=[] Set exec driver options 30 --exec-root="/var/run/docker" Root of the Docker execdriver 31 --fixed-cidr="" IPv4 subnet for fixed IPs 32 --fixed-cidr-v6="" IPv6 subnet for fixed IPs 33 -G, --group="docker" Group for the unix socket 34 -g, --graph="/var/lib/docker" Root of the Docker runtime 35 -H, --host=[] Daemon socket(s) to connect to 36 -h, --help=false Print usage 37 --icc=true Enable inter-container communication 38 --insecure-registry=[] Enable insecure registry communication 39 --ip=0.0.0.0 Default IP when binding container ports 40 --ip-forward=true Enable net.ipv4.ip_forward 41 --ip-masq=true Enable IP masquerading 42 --iptables=true Enable addition of iptables rules 43 --ipv6=false Enable IPv6 networking 44 -l, --log-level="info" Set the logging level 45 --label=[] Set key=value labels to the daemon 46 --log-driver="json-file" Default driver for container logs 47 --log-opt=[] Log driver specific options 48 --mtu=0 Set the containers network MTU 49 -p, --pidfile="/var/run/docker.pid" Path to use for daemon PID file 50 --registry-mirror=[] Preferred Docker registry mirror 51 -s, --storage-driver="" Storage driver to use 52 --selinux-enabled=false Enable selinux support 53 --storage-opt=[] Set storage driver options 54 --tls=false Use TLS; implied by --tlsverify 55 --tlscacert="~/.docker/ca.pem" Trust certs signed only by this CA 56 --tlscert="~/.docker/cert.pem" Path to TLS certificate file 57 --tlskey="~/.docker/key.pem" Path to TLS key file 58 --tlsverify=false Use TLS and verify the remote 59 --userland-proxy=true Use userland proxy for loopback traffic 60 -v, --version=false Print version information and quit 61 62 Options with [] may be specified multiple times. 63 64 The Docker daemon is the persistent process that manages containers. Docker 65 uses the same binary for both the daemon and client. To run the daemon you 66 provide the `-d` flag. 67 68 To run the daemon with debug output, use `docker -d -D`. 69 70 ## Daemon socket option 71 72 The Docker daemon can listen for [Docker Remote API](/reference/api/docker_remote_api/) 73 requests via three different types of Socket: `unix`, `tcp`, and `fd`. 74 75 By default, a `unix` domain socket (or IPC socket) is created at 76 `/var/run/docker.sock`, requiring either `root` permission, or `docker` group 77 membership. 78 79 If you need to access the Docker daemon remotely, you need to enable the `tcp` 80 Socket. Beware that the default setup provides un-encrypted and 81 un-authenticated direct access to the Docker daemon - and should be secured 82 either using the [built in HTTPS encrypted socket](/articles/https/), or by 83 putting a secure web proxy in front of it. You can listen on port `2375` on all 84 network interfaces with `-H tcp://0.0.0.0:2375`, or on a particular network 85 interface using its IP address: `-H tcp://192.168.59.103:2375`. It is 86 conventional to use port `2375` for un-encrypted, and port `2376` for encrypted 87 communication with the daemon. 88 89 > **Note:** 90 > If you're using an HTTPS encrypted socket, keep in mind that only 91 > TLS1.0 and greater are supported. Protocols SSLv3 and under are not 92 > supported anymore for security reasons. 93 94 On Systemd based systems, you can communicate with the daemon via 95 [Systemd socket activation](http://0pointer.de/blog/projects/socket-activation.html), 96 use `docker -d -H fd://`. Using `fd://` will work perfectly for most setups but 97 you can also specify individual sockets: `docker -d -H fd://3`. If the 98 specified socket activated files aren't found, then Docker will exit. You can 99 find examples of using Systemd socket activation with Docker and Systemd in the 100 [Docker source tree](https://github.com/docker/docker/tree/master/contrib/init/systemd/). 101 102 You can configure the Docker daemon to listen to multiple sockets at the same 103 time using multiple `-H` options: 104 105 # listen using the default unix socket, and on 2 specific IP addresses on this host. 106 docker -d -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2 107 108 The Docker client will honor the `DOCKER_HOST` environment variable to set the 109 `-H` flag for the client. 110 111 $ docker -H tcp://0.0.0.0:2375 ps 112 # or 113 $ export DOCKER_HOST="tcp://0.0.0.0:2375" 114 $ docker ps 115 # both are equal 116 117 Setting the `DOCKER_TLS_VERIFY` environment variable to any value other than 118 the empty string is equivalent to setting the `--tlsverify` flag. The following 119 are equivalent: 120 121 $ docker --tlsverify ps 122 # or 123 $ export DOCKER_TLS_VERIFY=1 124 $ docker ps 125 126 The Docker client will honor the `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` 127 environment variables (or the lowercase versions thereof). `HTTPS_PROXY` takes 128 precedence over `HTTP_PROXY`. 129 130 ### Daemon storage-driver option 131 132 The Docker daemon has support for several different image layer storage 133 drivers: `aufs`, `devicemapper`, `btrfs`, `zfs` and `overlay`. 134 135 The `aufs` driver is the oldest, but is based on a Linux kernel patch-set that 136 is unlikely to be merged into the main kernel. These are also known to cause 137 some serious kernel crashes. However, `aufs` is also the only storage driver 138 that allows containers to share executable and shared library memory, so is a 139 useful choice when running thousands of containers with the same program or 140 libraries. 141 142 The `devicemapper` driver uses thin provisioning and Copy on Write (CoW) 143 snapshots. For each devicemapper graph location – typically 144 `/var/lib/docker/devicemapper` – a thin pool is created based on two block 145 devices, one for data and one for metadata. By default, these block devices 146 are created automatically by using loopback mounts of automatically created 147 sparse files. Refer to [Storage driver options](#storage-driver-options) below 148 for a way how to customize this setup. 149 [~jpetazzo/Resizing Docker containers with the Device Mapper plugin](http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/) 150 article explains how to tune your existing setup without the use of options. 151 152 The `btrfs` driver is very fast for `docker build` - but like `devicemapper` 153 does not share executable memory between devices. Use 154 `docker -d -s btrfs -g /mnt/btrfs_partition`. 155 156 The `zfs` driver is probably not fast as `btrfs` but has a longer track record 157 on stability. Thanks to `Single Copy ARC` shared blocks between clones will be 158 cached only once. Use `docker -d -s zfs`. To select a different zfs filesystem 159 set `zfs.fsname` option as described in [Storage driver options](#storage-driver-options). 160 161 The `overlay` is a very fast union filesystem. It is now merged in the main 162 Linux kernel as of [3.18.0](https://lkml.org/lkml/2014/10/26/137). Call 163 `docker -d -s overlay` to use it. 164 165 > **Note:** 166 > As promising as `overlay` is, the feature is still quite young and should not 167 > be used in production. Most notably, using `overlay` can cause excessive 168 > inode consumption (especially as the number of images grows), as well as 169 > being incompatible with the use of RPMs. 170 171 > **Note:** 172 > It is currently unsupported on `btrfs` or any Copy on Write filesystem 173 > and should only be used over `ext4` partitions. 174 175 ### Storage driver options 176 177 Particular storage-driver can be configured with options specified with 178 `--storage-opt` flags. Options for `devicemapper` are prefixed with `dm` and 179 options for `zfs` start with `zfs`. 180 181 * `dm.thinpooldev` 182 183 Specifies a custom block storage device to use for the thin pool. 184 185 If using a block device for device mapper storage, it is best to use `lvm` 186 to create and manage the thin-pool volume. This volume is then handed to Docker 187 to exclusively create snapshot volumes needed for images and containers. 188 189 Managing the thin-pool outside of Docker makes for the most feature-rich 190 method of having Docker utilize device mapper thin provisioning as the 191 backing storage for Docker's containers. The highlights of the lvm-based 192 thin-pool management feature include: automatic or interactive thin-pool 193 resize support, dynamically changing thin-pool features, automatic thinp 194 metadata checking when lvm activates the thin-pool, etc. 195 196 Example use: 197 198 docker -d --storage-opt dm.thinpooldev=/dev/mapper/thin-pool 199 200 * `dm.basesize` 201 202 Specifies the size to use when creating the base device, which limits the 203 size of images and containers. The default value is 10G. Note, thin devices 204 are inherently "sparse", so a 10G device which is mostly empty doesn't use 205 10 GB of space on the pool. However, the filesystem will use more space for 206 the empty case the larger the device is. 207 208 This value affects the system-wide "base" empty filesystem 209 that may already be initialized and inherited by pulled images. Typically, 210 a change to this value requires additional steps to take effect: 211 212 $ sudo service docker stop 213 $ sudo rm -rf /var/lib/docker 214 $ sudo service docker start 215 216 Example use: 217 218 $ docker -d --storage-opt dm.basesize=20G 219 220 * `dm.loopdatasize` 221 222 >**Note**: This option configures devicemapper loopback, which should not be used in production. 223 224 Specifies the size to use when creating the loopback file for the 225 "data" device which is used for the thin pool. The default size is 226 100G. The file is sparse, so it will not initially take up this 227 much space. 228 229 Example use: 230 231 $ docker -d --storage-opt dm.loopdatasize=200G 232 233 * `dm.loopmetadatasize` 234 235 >**Note**: This option configures devicemapper loopback, which should not be used in production. 236 237 Specifies the size to use when creating the loopback file for the 238 "metadadata" device which is used for the thin pool. The default size 239 is 2G. The file is sparse, so it will not initially take up 240 this much space. 241 242 Example use: 243 244 $ docker -d --storage-opt dm.loopmetadatasize=4G 245 246 * `dm.fs` 247 248 Specifies the filesystem type to use for the base device. The supported 249 options are "ext4" and "xfs". The default is "ext4" 250 251 Example use: 252 253 $ docker -d --storage-opt dm.fs=xfs 254 255 * `dm.mkfsarg` 256 257 Specifies extra mkfs arguments to be used when creating the base device. 258 259 Example use: 260 261 $ docker -d --storage-opt "dm.mkfsarg=-O ^has_journal" 262 263 * `dm.mountopt` 264 265 Specifies extra mount options used when mounting the thin devices. 266 267 Example use: 268 269 $ docker -d --storage-opt dm.mountopt=nodiscard 270 271 * `dm.datadev` 272 273 (Deprecated, use `dm.thinpooldev`) 274 275 Specifies a custom blockdevice to use for data for the thin pool. 276 277 If using a block device for device mapper storage, ideally both datadev and 278 metadatadev should be specified to completely avoid using the loopback 279 device. 280 281 Example use: 282 283 $ docker -d --storage-opt dm.datadev=/dev/sdb1 --storage-opt dm.metadatadev=/dev/sdc1 284 285 * `dm.metadatadev` 286 287 (Deprecated, use `dm.thinpooldev`) 288 289 Specifies a custom blockdevice to use for metadata for the thin pool. 290 291 For best performance the metadata should be on a different spindle than the 292 data, or even better on an SSD. 293 294 If setting up a new metadata pool it is required to be valid. This can be 295 achieved by zeroing the first 4k to indicate empty metadata, like this: 296 297 $ dd if=/dev/zero of=$metadata_dev bs=4096 count=1 298 299 Example use: 300 301 $ docker -d --storage-opt dm.datadev=/dev/sdb1 --storage-opt dm.metadatadev=/dev/sdc1 302 303 * `dm.blocksize` 304 305 Specifies a custom blocksize to use for the thin pool. The default 306 blocksize is 64K. 307 308 Example use: 309 310 $ docker -d --storage-opt dm.blocksize=512K 311 312 * `dm.blkdiscard` 313 314 Enables or disables the use of blkdiscard when removing devicemapper 315 devices. This is enabled by default (only) if using loopback devices and is 316 required to resparsify the loopback file on image/container removal. 317 318 Disabling this on loopback can lead to *much* faster container removal 319 times, but will make the space used in `/var/lib/docker` directory not be 320 returned to the system for other use when containers are removed. 321 322 Example use: 323 324 $ docker -d --storage-opt dm.blkdiscard=false 325 326 * `dm.override_udev_sync_check` 327 328 Overrides the `udev` synchronization checks between `devicemapper` and `udev`. 329 `udev` is the device manager for the Linux kernel. 330 331 To view the `udev` sync support of a Docker daemon that is using the 332 `devicemapper` driver, run: 333 334 $ docker info 335 [...] 336 Udev Sync Supported: true 337 [...] 338 339 When `udev` sync support is `true`, then `devicemapper` and udev can 340 coordinate the activation and deactivation of devices for containers. 341 342 When `udev` sync support is `false`, a race condition occurs between 343 the`devicemapper` and `udev` during create and cleanup. The race condition 344 results in errors and failures. (For information on these failures, see 345 [docker#4036](https://github.com/docker/docker/issues/4036)) 346 347 To allow the `docker` daemon to start, regardless of `udev` sync not being 348 supported, set `dm.override_udev_sync_check` to true: 349 350 $ docker -d --storage-opt dm.override_udev_sync_check=true 351 352 When this value is `true`, the `devicemapper` continues and simply warns 353 you the errors are happening. 354 355 > **Note:** 356 > The ideal is to pursue a `docker` daemon and environment that does 357 > support synchronizing with `udev`. For further discussion on this 358 > topic, see [docker#4036](https://github.com/docker/docker/issues/4036). 359 > Otherwise, set this flag for migrating existing Docker daemons to 360 > a daemon with a supported environment. 361 362 363 ## Docker execdriver option 364 365 Currently supported options of `zfs`: 366 367 * `zfs.fsname` 368 369 Set zfs filesystem under which docker will create its own datasets. 370 By default docker will pick up the zfs filesystem where docker graph 371 (`/var/lib/docker`) is located. 372 373 Example use: 374 375 $ docker -d -s zfs --storage-opt zfs.fsname=zroot/docker 376 377 ## Docker execdriver option 378 379 The Docker daemon uses a specifically built `libcontainer` execution driver as 380 its interface to the Linux kernel `namespaces`, `cgroups`, and `SELinux`. 381 382 There is still legacy support for the original [LXC userspace tools]( 383 https://linuxcontainers.org/) via the `lxc` execution driver, however, this is 384 not where the primary development of new functionality is taking place. 385 Add `-e lxc` to the daemon flags to use the `lxc` execution driver. 386 387 ## Options for the native execdriver 388 389 You can configure the `native` (libcontainer) execdriver using options specified 390 with the `--exec-opt` flag. All the flag's options have the `native` prefix. A 391 single `native.cgroupdriver` option is available. 392 393 The `native.cgroupdriver` option specifies the management of the container's 394 cgroups. You can specify `cgroupfs` or `systemd`. If you specify `systemd` and 395 it is not available, the system uses `cgroupfs`. By default, if no option is 396 specified, the execdriver first tries `systemd` and falls back to `cgroupfs`. 397 This example sets the execdriver to `cgroupfs`: 398 399 $ sudo docker -d --exec-opt native.cgroupdriver=cgroupfs 400 401 Setting this option applies to all containers the daemon launches. 402 403 ## Daemon DNS options 404 405 To set the DNS server for all Docker containers, use 406 `docker -d --dns 8.8.8.8`. 407 408 To set the DNS search domain for all Docker containers, use 409 `docker -d --dns-search example.com`. 410 411 ## Insecure registries 412 413 Docker considers a private registry either secure or insecure. In the rest of 414 this section, *registry* is used for *private registry*, and `myregistry:5000` 415 is a placeholder example for a private registry. 416 417 A secure registry uses TLS and a copy of its CA certificate is placed on the 418 Docker host at `/etc/docker/certs.d/myregistry:5000/ca.crt`. An insecure 419 registry is either not using TLS (i.e., listening on plain text HTTP), or is 420 using TLS with a CA certificate not known by the Docker daemon. The latter can 421 happen when the certificate was not found under 422 `/etc/docker/certs.d/myregistry:5000/`, or if the certificate verification 423 failed (i.e., wrong CA). 424 425 By default, Docker assumes all, but local (see local registries below), 426 registries are secure. Communicating with an insecure registry is not possible 427 if Docker assumes that registry is secure. In order to communicate with an 428 insecure registry, the Docker daemon requires `--insecure-registry` in one of 429 the following two forms: 430 431 * `--insecure-registry myregistry:5000` tells the Docker daemon that 432 myregistry:5000 should be considered insecure. 433 * `--insecure-registry 10.1.0.0/16` tells the Docker daemon that all registries 434 whose domain resolve to an IP address is part of the subnet described by the 435 CIDR syntax, should be considered insecure. 436 437 The flag can be used multiple times to allow multiple registries to be marked 438 as insecure. 439 440 If an insecure registry is not marked as insecure, `docker pull`, 441 `docker push`, and `docker search` will result in an error message prompting 442 the user to either secure or pass the `--insecure-registry` flag to the Docker 443 daemon as described above. 444 445 Local registries, whose IP address falls in the 127.0.0.0/8 range, are 446 automatically marked as insecure as of Docker 1.3.2. It is not recommended to 447 rely on this, as it may change in the future. 448 449 ## Running a Docker daemon behind a HTTPS_PROXY 450 451 When running inside a LAN that uses a `HTTPS` proxy, the Docker Hub 452 certificates will be replaced by the proxy's certificates. These certificates 453 need to be added to your Docker host's configuration: 454 455 1. Install the `ca-certificates` package for your distribution 456 2. Ask your network admin for the proxy's CA certificate and append them to 457 `/etc/pki/tls/certs/ca-bundle.crt` 458 3. Then start your Docker daemon with `HTTPS_PROXY=http://username:password@proxy:port/ docker -d`. 459 The `username:` and `password@` are optional - and are only needed if your 460 proxy is set up to require authentication. 461 462 This will only add the proxy and authentication to the Docker daemon's requests - 463 your `docker build`s and running containers will need extra configuration to 464 use the proxy 465 466 ## Default Ulimits 467 468 `--default-ulimit` allows you to set the default `ulimit` options to use for 469 all containers. It takes the same options as `--ulimit` for `docker run`. If 470 these defaults are not set, `ulimit` settings will be inherited, if not set on 471 `docker run`, from the Docker daemon. Any `--ulimit` options passed to 472 `docker run` will overwrite these defaults. 473 474 ## Miscellaneous options 475 476 IP masquerading uses address translation to allow containers without a public 477 IP to talk to other machines on the Internet. This may interfere with some 478 network topologies and can be disabled with --ip-masq=false. 479 480 Docker supports softlinks for the Docker data directory (`/var/lib/docker`) and 481 for `/var/lib/docker/tmp`. The `DOCKER_TMPDIR` and the data directory can be 482 set like this: 483 484 DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// > /var/lib/boot2docker/docker.log 2>&1 485 # or 486 export DOCKER_TMPDIR=/mnt/disk2/tmp 487 /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// > /var/lib/boot2docker/docker.log 2>&1 488 489