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 ```