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