github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/docs/reference/commandline/run.md (about)

     1  <!--[metadata]>
     2  +++
     3  title = "run"
     4  description = "The run command description and usage"
     5  keywords = ["run, command, container"]
     6  [menu.main]
     7  parent = "smn_cli"
     8  +++
     9  <![end-metadata]-->
    10  
    11  # run
    12  
    13      Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    14  
    15      Run a command in a new container
    16  
    17        -a, --attach=[]               Attach to STDIN, STDOUT or STDERR
    18        --add-host=[]                 Add a custom host-to-IP mapping (host:ip)
    19        --blkio-weight=0              Block IO weight (relative weight)
    20        --blkio-weight-device=[]      Block IO weight (relative device weight, format: `DEVICE_NAME:WEIGHT`)
    21        --cpu-shares=0                CPU shares (relative weight)
    22        --cap-add=[]                  Add Linux capabilities
    23        --cap-drop=[]                 Drop Linux capabilities
    24        --cgroup-parent=""            Optional parent cgroup for the container
    25        --cidfile=""                  Write the container ID to the file
    26        --cpu-period=0                Limit CPU CFS (Completely Fair Scheduler) period
    27        --cpu-quota=0                 Limit CPU CFS (Completely Fair Scheduler) quota
    28        --cpuset-cpus=""              CPUs in which to allow execution (0-3, 0,1)
    29        --cpuset-mems=""              Memory nodes (MEMs) in which to allow execution (0-3, 0,1)
    30        -d, --detach=false            Run container in background and print container ID
    31        --device=[]                   Add a host device to the container
    32        --device-read-bps=[]          Limit read rate (bytes per second) from a device (e.g., --device-read-bps=/dev/sda:1mb)
    33        --device-write-bps=[]         Limit write rate (bytes per second) to a device (e.g., --device-write-bps=/dev/sda:1mb)
    34        --disable-content-trust=true  Skip image verification
    35        --dns=[]                      Set custom DNS servers
    36        --dns-opt=[]                  Set custom DNS options
    37        --dns-search=[]               Set custom DNS search domains
    38        -e, --env=[]                  Set environment variables
    39        --entrypoint=""               Overwrite the default ENTRYPOINT of the image
    40        --env-file=[]                 Read in a file of environment variables
    41        --expose=[]                   Expose a port or a range of ports
    42        --group-add=[]                Add additional groups to run as
    43        -h, --hostname=""             Container host name
    44        --help=false                  Print usage
    45        -i, --interactive=false       Keep STDIN open even if not attached
    46        --ipc=""                      IPC namespace to use
    47        --isolation=""                Container isolation technology
    48        --kernel-memory=""            Kernel memory limit
    49        -l, --label=[]                Set metadata on the container (e.g., --label=com.example.key=value)
    50        --label-file=[]               Read in a file of labels (EOL delimited)
    51        --link=[]                     Add link to another container
    52        --log-driver=""               Logging driver for container
    53        --log-opt=[]                  Log driver specific options
    54        -m, --memory=""               Memory limit
    55        --mac-address=""              Container MAC address (e.g. 92:d0:c6:0a:29:33)
    56        --memory-reservation=""       Memory soft limit
    57        --memory-swap=""              Total memory (memory + swap), '-1' to disable swap
    58        --memory-swappiness=""        Tune a container's memory swappiness behavior. Accepts an integer between 0 and 100.
    59        --name=""                     Assign a name to the container
    60        --net="bridge"                Connect a container to a network
    61                                      'bridge': create a network stack on the default Docker bridge
    62                                      'none': no networking
    63                                      'container:<name|id>': reuse another container's network stack
    64                                      'host': use the Docker host network stack
    65                                      '<network-name>|<network-id>': connect to a user-defined network
    66        --oom-kill-disable=false      Whether to disable OOM Killer for the container or not
    67        --oom-score-adj=0             Tune the host's OOM preferences for containers (accepts -1000 to 1000)
    68        -P, --publish-all=false       Publish all exposed ports to random ports
    69        -p, --publish=[]              Publish a container's port(s) to the host
    70        --pid=""                      PID namespace to use
    71        --privileged=false            Give extended privileges to this container
    72        --read-only=false             Mount the container's root filesystem as read only
    73        --restart="no"                Restart policy (no, on-failure[:max-retry], always, unless-stopped)
    74        --rm=false                    Automatically remove the container when it exits
    75        --shm-size=[]                 Size of `/dev/shm`. The format is `<number><unit>`. `number` must be greater than `0`.  Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes), or `g` (gigabytes). If you omit the unit, the system uses bytes. If you omit the size entirely, the system uses `64m`.
    76        --security-opt=[]             Security Options
    77        --sig-proxy=true              Proxy received signals to the process
    78        --stop-signal="SIGTERM"       Signal to stop a container
    79        -t, --tty=false               Allocate a pseudo-TTY
    80        -u, --user=""                 Username or UID (format: <name|uid>[:<group|gid>])
    81        --ulimit=[]                   Ulimit options
    82        --uts=""                      UTS namespace to use
    83        -v, --volume=[host-src:]container-dest[:<options>]
    84                                      Bind mount a volume. The comma-delimited
    85                                      `options` are [rw|ro], [z|Z], or
    86                                      [[r]shared|[r]slave|[r]private]. The
    87                                      'host-src' is an absolute path or a name
    88                                      value.
    89        --volume-driver=""            Container's volume driver
    90        --volumes-from=[]             Mount volumes from the specified container(s)
    91        -w, --workdir=""              Working directory inside the container
    92  
    93  The `docker run` command first `creates` a writeable container layer over the
    94  specified image, and then `starts` it using the specified command. That is,
    95  `docker run` is equivalent to the API `/containers/create` then
    96  `/containers/(id)/start`. A stopped container can be restarted with all its
    97  previous changes intact using `docker start`. See `docker ps -a` to view a list
    98  of all containers.
    99  
   100  The `docker run` command can be used in combination with `docker commit` to
   101  [*change the command that a container runs*](commit.md). There is additional detailed information about `docker run` in the [Docker run reference](../run.md).
   102  
   103  For information on connecting a container to a network, see the ["*Docker network overview*"](../../userguide/networking/index.md).
   104  
   105  ## Examples
   106  
   107  ### Assign name and allocate psuedo-TTY (--name, -it)
   108  
   109      $ docker run --name test -it debian
   110      root@d6c0fe130dba:/# exit 13
   111      $ echo $?
   112      13
   113      $ docker ps -a | grep test
   114      d6c0fe130dba        debian:7            "/bin/bash"         26 seconds ago      Exited (13) 17 seconds ago                         test
   115  
   116  This example runs a container named `test` using the `debian:latest`
   117  image. The `-it` instructs Docker to allocate a pseudo-TTY connected to
   118  the container's stdin; creating an interactive `bash` shell in the container.
   119  In the example, the `bash` shell is quit by entering
   120  `exit 13`. This exit code is passed on to the caller of
   121  `docker run`, and is recorded in the `test` container's metadata.
   122  
   123  ### Capture container ID (--cidfile)
   124  
   125      $ docker run --cidfile /tmp/docker_test.cid ubuntu echo "test"
   126  
   127  This will create a container and print `test` to the console. The `cidfile`
   128  flag makes Docker attempt to create a new file and write the container ID to it.
   129  If the file exists already, Docker will return an error. Docker will close this
   130  file when `docker run` exits.
   131  
   132  ### Full container capabilities (--privileged)
   133  
   134      $ docker run -t -i --rm ubuntu bash
   135      root@bc338942ef20:/# mount -t tmpfs none /mnt
   136      mount: permission denied
   137  
   138  This will *not* work, because by default, most potentially dangerous kernel
   139  capabilities are dropped; including `cap_sys_admin` (which is required to mount
   140  filesystems). However, the `--privileged` flag will allow it to run:
   141  
   142      $ docker run --privileged ubuntu bash
   143      root@50e3f57e16e6:/# mount -t tmpfs none /mnt
   144      root@50e3f57e16e6:/# df -h
   145      Filesystem      Size  Used Avail Use% Mounted on
   146      none            1.9G     0  1.9G   0% /mnt
   147  
   148  The `--privileged` flag gives *all* capabilities to the container, and it also
   149  lifts all the limitations enforced by the `device` cgroup controller. In other
   150  words, the container can then do almost everything that the host can do. This
   151  flag exists to allow special use-cases, like running Docker within Docker.
   152  
   153  ### Set working directory (-w)
   154  
   155      $ docker  run -w /path/to/dir/ -i -t  ubuntu pwd
   156  
   157  The `-w` lets the command being executed inside directory given, here
   158  `/path/to/dir/`. If the path does not exists it is created inside the container.
   159  
   160  ### mount tmpfs (--tmpfs)
   161  
   162      $ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image
   163  
   164      The --tmpfs flag mounts a tmpfs into the container with the rw,noexec,nosuid,size=65536k options.
   165  
   166      Underlying content from the /run in the my_image image is copied into tmpfs.
   167  
   168  ### Mount volume (-v, --read-only)
   169  
   170      $ docker  run  -v `pwd`:`pwd` -w `pwd` -i -t  ubuntu pwd
   171  
   172  The `-v` flag mounts the current working directory into the container. The `-w`
   173  lets the command being executed inside the current working directory, by
   174  changing into the directory to the value returned by `pwd`. So this
   175  combination executes the command using the container, but inside the
   176  current working directory.
   177  
   178      $ docker run -v /doesnt/exist:/foo -w /foo -i -t ubuntu bash
   179  
   180  When the host directory of a bind-mounted volume doesn't exist, Docker
   181  will automatically create this directory on the host for you. In the
   182  example above, Docker will create the `/doesnt/exist`
   183  folder before starting your container.
   184  
   185      $ docker run --read-only -v /icanwrite busybox touch /icanwrite here
   186  
   187  Volumes can be used in combination with `--read-only` to control where
   188  a container writes files. The `--read-only` flag mounts the container's root
   189  filesystem as read only prohibiting writes to locations other than the
   190  specified volumes for the container.
   191  
   192      $ docker run -t -i -v /var/run/docker.sock:/var/run/docker.sock -v ./static-docker:/usr/bin/docker busybox sh
   193  
   194  By bind-mounting the docker unix socket and statically linked docker
   195  binary (such as that provided by [https://get.docker.com](
   196  https://get.docker.com)), you give the container the full access to create and
   197  manipulate the host's Docker daemon.
   198  
   199  ### Publish or expose port (-p, --expose)
   200  
   201      $ docker run -p 127.0.0.1:80:8080 ubuntu bash
   202  
   203  This binds port `8080` of the container to port `80` on `127.0.0.1` of the host
   204  machine. The [Docker User
   205  Guide](../../userguide/networking/default_network/dockerlinks.md)
   206  explains in detail how to manipulate ports in Docker.
   207  
   208      $ docker run --expose 80 ubuntu bash
   209  
   210  This exposes port `80` of the container without publishing the port to the host
   211  system's interfaces.
   212  
   213  ### Set environment variables (-e, --env, --env-file)
   214  
   215      $ docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash
   216  
   217  This sets environmental variables in the container. For illustration all three
   218  flags are shown here. Where `-e`, `--env` take an environment variable and
   219  value, or if no `=` is provided, then that variable's current value is passed
   220  through (i.e. `$MYVAR1` from the host is set to `$MYVAR1` in the container).
   221  When no `=` is provided and that variable is not defined in the client's
   222  environment then that variable will be removed from the container's list of
   223  environment variables.
   224  All three flags, `-e`, `--env` and `--env-file` can be repeated.
   225  
   226  Regardless of the order of these three flags, the `--env-file` are processed
   227  first, and then `-e`, `--env` flags. This way, the `-e` or `--env` will
   228  override variables as needed.
   229  
   230      $ cat ./env.list
   231      TEST_FOO=BAR
   232      $ docker run --env TEST_FOO="This is a test" --env-file ./env.list busybox env | grep TEST_FOO
   233      TEST_FOO=This is a test
   234  
   235  The `--env-file` flag takes a filename as an argument and expects each line
   236  to be in the `VAR=VAL` format, mimicking the argument passed to `--env`. Comment
   237  lines need only be prefixed with `#`
   238  
   239  An example of a file passed with `--env-file`
   240  
   241      $ cat ./env.list
   242      TEST_FOO=BAR
   243  
   244      # this is a comment
   245      TEST_APP_DEST_HOST=10.10.0.127
   246      TEST_APP_DEST_PORT=8888
   247      _TEST_BAR=FOO
   248      TEST_APP_42=magic
   249      helloWorld=true
   250      123qwe=bar
   251      org.spring.config=something
   252  
   253      # pass through this variable from the caller
   254      TEST_PASSTHROUGH
   255      $ TEST_PASSTHROUGH=howdy docker run --env-file ./env.list busybox env
   256      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
   257      HOSTNAME=5198e0745561
   258      TEST_FOO=BAR
   259      TEST_APP_DEST_HOST=10.10.0.127
   260      TEST_APP_DEST_PORT=8888
   261      _TEST_BAR=FOO
   262      TEST_APP_42=magic
   263      helloWorld=true
   264      TEST_PASSTHROUGH=howdy
   265      HOME=/root
   266      123qwe=bar
   267      org.spring.config=something
   268  
   269      $ docker run --env-file ./env.list busybox env
   270      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
   271      HOSTNAME=5198e0745561
   272      TEST_FOO=BAR
   273      TEST_APP_DEST_HOST=10.10.0.127
   274      TEST_APP_DEST_PORT=8888
   275      _TEST_BAR=FOO
   276      TEST_APP_42=magic
   277      helloWorld=true
   278      TEST_PASSTHROUGH=
   279      HOME=/root
   280      123qwe=bar
   281      org.spring.config=something
   282  
   283  ### Set metadata on container (-l, --label, --label-file)
   284  
   285  A label is a `key=value` pair that applies metadata to a container. To label a container with two labels:
   286  
   287      $ docker run -l my-label --label com.example.foo=bar ubuntu bash
   288  
   289  The `my-label` key doesn't specify a value so the label defaults to an empty
   290  string(`""`). To add multiple labels, repeat the label flag (`-l` or `--label`).
   291  
   292  The `key=value` must be unique to avoid overwriting the label value. If you
   293  specify labels with identical keys but different values, each subsequent value
   294  overwrites the previous. Docker uses the last `key=value` you supply.
   295  
   296  Use the `--label-file` flag to load multiple labels from a file. Delimit each
   297  label in the file with an EOL mark. The example below loads labels from a
   298  labels file in the current directory:
   299  
   300      $ docker run --label-file ./labels ubuntu bash
   301  
   302  The label-file format is similar to the format for loading environment
   303  variables. (Unlike environment variables, labels are not visible to processes
   304  running inside a container.) The following example illustrates a label-file
   305  format:
   306  
   307      com.example.label1="a label"
   308  
   309      # this is a comment
   310      com.example.label2=another\ label
   311      com.example.label3
   312  
   313  You can load multiple label-files by supplying multiple  `--label-file` flags.
   314  
   315  For additional information on working with labels, see [*Labels - custom
   316  metadata in Docker*](../../userguide/labels-custom-metadata.md) in the Docker User
   317  Guide.
   318  
   319  ### Connect a container to a network (--net)
   320  
   321  When you start a container use the `--net` flag to connect it to a network.
   322  This adds the `busybox` container to the `mynet` network.
   323  
   324  ```bash
   325  $ docker run -itd --net=my-multihost-network busybox
   326  ```
   327  
   328  If you want to add a running container to a network use the `docker network connect` subcommand.
   329  
   330  You can connect multiple containers to the same network. Once connected, the
   331  containers can communicate easily need only another container's IP address
   332  or name. For `overlay` networks or custom plugins that support multi-host
   333  connectivity, containers connected to the same multi-host network but launched
   334  from different Engines can also communicate in this way.
   335  
   336  **Note**: Service discovery is unavailable on the default bridge network.
   337  Containers can communicate via their IP addresses by default. To communicate
   338  by name, they must be linked.
   339  
   340  You can disconnect a container from a network using the `docker network
   341  disconnect` command.
   342  
   343  ### Mount volumes from container (--volumes-from)
   344  
   345      $ docker run --volumes-from 777f7dc92da7 --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwd
   346  
   347  The `--volumes-from` flag mounts all the defined volumes from the referenced
   348  containers. Containers can be specified by repetitions of the `--volumes-from`
   349  argument. The container ID may be optionally suffixed with `:ro` or `:rw` to
   350  mount the volumes in read-only or read-write mode, respectively. By default,
   351  the volumes are mounted in the same mode (read write or read only) as
   352  the reference container.
   353  
   354  Labeling systems like SELinux require that proper labels are placed on volume
   355  content mounted into a container. Without a label, the security system might
   356  prevent the processes running inside the container from using the content. By
   357  default, Docker does not change the labels set by the OS.
   358  
   359  To change the label in the container context, you can add either of two suffixes
   360  `:z` or `:Z` to the volume mount. These suffixes tell Docker to relabel file
   361  objects on the shared volumes. The `z` option tells Docker that two containers
   362  share the volume content. As a result, Docker labels the content with a shared
   363  content label. Shared volume labels allow all containers to read/write content.
   364  The `Z` option tells Docker to label the content with a private unshared label.
   365  Only the current container can use a private volume.
   366  
   367  ### Attach to STDIN/STDOUT/STDERR (-a)
   368  
   369  The `-a` flag tells `docker run` to bind to the container's `STDIN`, `STDOUT`
   370  or `STDERR`. This makes it possible to manipulate the output and input as
   371  needed.
   372  
   373      $ echo "test" | docker run -i -a stdin ubuntu cat -
   374  
   375  This pipes data into a container and prints the container's ID by attaching
   376  only to the container's `STDIN`.
   377  
   378      $ docker run -a stderr ubuntu echo test
   379  
   380  This isn't going to print anything unless there's an error because we've
   381  only attached to the `STDERR` of the container. The container's logs
   382  still store what's been written to `STDERR` and `STDOUT`.
   383  
   384      $ cat somefile | docker run -i -a stdin mybuilder dobuild
   385  
   386  This is how piping a file into a container could be done for a build.
   387  The container's ID will be printed after the build is done and the build
   388  logs could be retrieved using `docker logs`. This is
   389  useful if you need to pipe a file or something else into a container and
   390  retrieve the container's ID once the container has finished running.
   391  
   392  ### Add host device to container (--device)
   393  
   394      $ docker run --device=/dev/sdc:/dev/xvdc --device=/dev/sdd --device=/dev/zero:/dev/nulo -i -t ubuntu ls -l /dev/{xvdc,sdd,nulo}
   395      brw-rw---- 1 root disk 8, 2 Feb  9 16:05 /dev/xvdc
   396      brw-rw---- 1 root disk 8, 3 Feb  9 16:05 /dev/sdd
   397      crw-rw-rw- 1 root root 1, 5 Feb  9 16:05 /dev/nulo
   398  
   399  It is often necessary to directly expose devices to a container. The `--device`
   400  option enables that. For example, a specific block storage device or loop
   401  device or audio device can be added to an otherwise unprivileged container
   402  (without the `--privileged` flag) and have the application directly access it.
   403  
   404  By default, the container will be able to `read`, `write` and `mknod` these devices.
   405  This can be overridden using a third `:rwm` set of options to each `--device`
   406  flag:
   407  
   408  
   409      $ docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk  /dev/xvdc
   410  
   411      Command (m for help): q
   412      $ docker run --device=/dev/sda:/dev/xvdc:ro --rm -it ubuntu fdisk  /dev/xvdc
   413      You will not be able to write the partition table.
   414  
   415      Command (m for help): q
   416  
   417      $ docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk  /dev/xvdc
   418  
   419      Command (m for help): q
   420  
   421      $ docker run --device=/dev/sda:/dev/xvdc:m --rm -it ubuntu fdisk  /dev/xvdc
   422      fdisk: unable to open /dev/xvdc: Operation not permitted
   423  
   424  > **Note:**
   425  > `--device` cannot be safely used with ephemeral devices. Block devices
   426  > that may be removed should not be added to untrusted containers with
   427  > `--device`.
   428  
   429  ### Restart policies (--restart)
   430  
   431  Use Docker's `--restart` to specify a container's *restart policy*. A restart
   432  policy controls whether the Docker daemon restarts a container after exit.
   433  Docker supports the following restart policies:
   434  
   435  <table>
   436    <thead>
   437      <tr>
   438        <th>Policy</th>
   439        <th>Result</th>
   440      </tr>
   441    </thead>
   442    <tbody>
   443      <tr>
   444        <td><strong>no</strong></td>
   445        <td>
   446          Do not automatically restart the container when it exits. This is the
   447          default.
   448        </td>
   449      </tr>
   450      <tr>
   451        <td>
   452          <span style="white-space: nowrap">
   453            <strong>on-failure</strong>[:max-retries]
   454          </span>
   455        </td>
   456        <td>
   457          Restart only if the container exits with a non-zero exit status.
   458          Optionally, limit the number of restart retries the Docker
   459          daemon attempts.
   460        </td>
   461      </tr>
   462      <tr>
   463        <td><strong>always</strong></td>
   464        <td>
   465          Always restart the container regardless of the exit status.
   466          When you specify always, the Docker daemon will try to restart
   467          the container indefinitely. The container will also always start
   468          on daemon startup, regardless of the current state of the container.
   469        </td>
   470      </tr>
   471      <tr>
   472        <td><strong>unless-stopped</strong></td>
   473        <td>
   474          Always restart the container regardless of the exit status, but
   475          do not start it on daemon startup if the container has been put
   476          to a stopped state before.
   477        </td>
   478      </tr>
   479    </tbody>
   480  </table>
   481  
   482      $ docker run --restart=always redis
   483  
   484  This will run the `redis` container with a restart policy of **always**
   485  so that if the container exits, Docker will restart it.
   486  
   487  More detailed information on restart policies can be found in the
   488  [Restart Policies (--restart)](../run.md#restart-policies-restart)
   489  section of the Docker run reference page.
   490  
   491  ### Add entries to container hosts file (--add-host)
   492  
   493  You can add other hosts into a container's `/etc/hosts` file by using one or
   494  more `--add-host` flags. This example adds a static address for a host named
   495  `docker`:
   496  
   497      $ docker run --add-host=docker:10.180.0.1 --rm -it debian
   498      $$ ping docker
   499      PING docker (10.180.0.1): 48 data bytes
   500      56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
   501      56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
   502      ^C--- docker ping statistics ---
   503      2 packets transmitted, 2 packets received, 0% packet loss
   504      round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
   505  
   506  Sometimes you need to connect to the Docker host from within your
   507  container. To enable this, pass the Docker host's IP address to
   508  the container using the `--add-host` flag. To find the host's address,
   509  use the `ip addr show` command.
   510  
   511  The flags you pass to `ip addr show` depend on whether you are
   512  using IPv4 or IPv6 networking in your containers. Use the following
   513  flags for IPv4 address retrieval for a network device named `eth0`:
   514  
   515      $ HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print \$2}' | cut -d / -f 1`
   516      $ docker run  --add-host=docker:${HOSTIP} --rm -it debian
   517  
   518  For IPv6 use the `-6` flag instead of the `-4` flag. For other network
   519  devices, replace `eth0` with the correct device name (for example `docker0`
   520  for the bridge device).
   521  
   522  ### Set ulimits in container (--ulimit)
   523  
   524  Since setting `ulimit` settings in a container requires extra privileges not
   525  available in the default container, you can set these using the `--ulimit` flag.
   526  `--ulimit` is specified with a soft and hard limit as such:
   527  `<type>=<soft limit>[:<hard limit>]`, for example:
   528  
   529      $ docker run --ulimit nofile=1024:1024 --rm debian ulimit -n
   530      1024
   531  
   532  > **Note:**
   533  > If you do not provide a `hard limit`, the `soft limit` will be used
   534  > for both values. If no `ulimits` are set, they will be inherited from
   535  > the default `ulimits` set on the daemon.  `as` option is disabled now.
   536  > In other words, the following script is not supported:
   537  > `$ docker run -it --ulimit as=1024 fedora /bin/bash`
   538  
   539  The values are sent to the appropriate `syscall` as they are set.
   540  Docker doesn't perform any byte conversion. Take this into account when setting the values.
   541  
   542  #### For `nproc` usage
   543  
   544  Be careful setting `nproc` with the `ulimit` flag as `nproc` is designed by Linux to set the
   545  maximum number of processes available to a user, not to a container.  For example, start four
   546  containers with `daemon` user:
   547  
   548      docker run -d -u daemon --ulimit nproc=3 busybox top
   549      docker run -d -u daemon --ulimit nproc=3 busybox top
   550      docker run -d -u daemon --ulimit nproc=3 busybox top
   551      docker run -d -u daemon --ulimit nproc=3 busybox top
   552  
   553  The 4th container fails and reports "[8] System error: resource temporarily unavailable" error.
   554  This fails because the caller set `nproc=3` resulting in the first three containers using up
   555  the three processes quota set for the `daemon` user.
   556  
   557  ### Stop container with signal (--stop-signal)
   558  
   559  The `--stop-signal` flag sets the system call signal that will be sent to the container to exit.
   560  This signal can be a valid unsigned number that matches a position in the kernel's syscall table, for instance 9,
   561  or a signal name in the format SIGNAME, for instance SIGKILL.
   562  
   563  ### Specify isolation technology for container (--isolation)
   564  
   565  This option is useful in situations where you are running Docker containers on
   566  Microsoft Windows. The `--isolation <value>` option sets a container's isolation
   567  technology. On Linux, the only supported is the `default` option which uses
   568  Linux namespaces. These two commands are equivalent on Linux:
   569  
   570  ```
   571  $ docker run -d busybox top
   572  $ docker run -d --isolation default busybox top
   573  ```
   574  
   575  On Microsoft Windows, can take any of these values:
   576  
   577  
   578  | Value     | Description                                                                                                                                                   |
   579  |-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
   580  | `default` | Use the value specified by the Docker daemon's `--exec-opt` . If the `daemon` does not specify an isolation technology, Microsoft Windows uses `process` as its default value.  |
   581  | `process` | Namespace isolation only.                                                                                                                                     |
   582  | `hyperv`   | Hyper-V hypervisor partition-based isolation.                                                                                                                  |
   583  
   584  In practice, when running on Microsoft Windows without a `daemon` option set,  these two commands are equivalent:
   585  
   586  ```
   587  $ docker run -d --isolation default busybox top
   588  $ docker run -d --isolation process busybox top
   589  ```
   590  
   591  If you have set the `--exec-opt isolation=hyperv` option on the Docker `daemon`, any of these commands also result in `hyperv` isolation:
   592  
   593  ```
   594  $ docker run -d --isolation default busybox top
   595  $ docker run -d --isolation hyperv busybox top
   596  ```