From 939630750154b56d829e979bc96fe9339da6eaec Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 25 May 2016 20:48:39 +0200 Subject: [PATCH 01/20] Merge pull request #22661 from SvenDowideit/update-compatibility-matrix docs: update graphdriver compatibility matrix (cherry picked from commit a5e4aaaf71cad9e4f57b50d92297d74c515b6c6d) Signed-off-by: Sebastiaan van Stijn --- docs/userguide/storagedriver/selectadriver.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/userguide/storagedriver/selectadriver.md b/docs/userguide/storagedriver/selectadriver.md index a741a137c8..71bc4473c7 100644 --- a/docs/userguide/storagedriver/selectadriver.md +++ b/docs/userguide/storagedriver/selectadriver.md @@ -40,10 +40,10 @@ driver names: |AUFS |`aufs` | |Btrfs |`btrfs` | |Device Mapper |`devicemapper` | -|VFS* |`vfs` | +|VFS |`vfs` | |ZFS |`zfs` | -To find out which storage driver is set on the daemon , you use the +To find out which storage driver is set on the daemon, you use the `docker info` command: $ docker info @@ -71,18 +71,18 @@ For example, the `btrfs` storage driver on a Btrfs backing filesystem. The following table lists each storage driver and whether it must match the host's backing file system: -|Storage driver |Must match backing filesystem |Incompatible with | -|---------------|------------------------------|--------------------| -|`overlay` |No |`btrfs` `aufs` `zfs`| -|`aufs` |No |`btrfs` `aufs` | -|`btrfs` |Yes | N/A | -|`devicemapper` |No | N/A | -|`vfs` |No | N/A | -|`zfs` |Yes | N/A | +|Storage driver |Commonly used on |Disabled on | +|---------------|-----------------|------------------------------| +|`overlay` |`ext4` `xfs` |`btrfs` `aufs` `overlay` `zfs`| +|`aufs` |`ext4` `xfs` |`btrfs` `aufs` | +|`btrfs` |`btrfs` _only_ | N/A | +|`devicemapper` |`direct-lvm` | N/A | +|`vfs` |debugging only | N/A | +|`zfs` |`zfs` _only_ | N/A | > **Note** -> Incompatible with means some storage drivers can not run over certain backing +> "Disabled on" means some storage drivers can not run over certain backing > filesystem. You can set the storage driver by passing the `--storage-driver=` option From d1024638f9a3b6206a9f7ce5f15089277d64256a Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Sat, 14 May 2016 10:12:15 +0200 Subject: [PATCH 02/20] Merge pull request #22720 from thaJeztah/fix-markdown Fix Markdown formatting in Devicemapper docs (cherry picked from commit 2f94a367d7dcb24141cbe48c4e75e3671ae3e0f1) Signed-off-by: Sebastiaan van Stijn --- .../storagedriver/device-mapper-driver.md | 81 ++++++++++++------- 1 file changed, 51 insertions(+), 30 deletions(-) diff --git a/docs/userguide/storagedriver/device-mapper-driver.md b/docs/userguide/storagedriver/device-mapper-driver.md index 90f7424b9d..fe3a7fbbb4 100644 --- a/docs/userguide/storagedriver/device-mapper-driver.md +++ b/docs/userguide/storagedriver/device-mapper-driver.md @@ -371,7 +371,8 @@ capacity. ### For a loop-lvm configuration -In this scenario, the thin pool is configured to use `loop-lvm` mode. To show the specifics of the existing configuration use `docker info`: +In this scenario, the thin pool is configured to use `loop-lvm` mode. To show +the specifics of the existing configuration use `docker info`: ```bash $ sudo docker info @@ -448,23 +449,33 @@ The `Data Space` values show that the pool is 100GB total. This example extends a. Get the pool name first. - $ sudo dmsetup status docker-8:1-123141-pool: 0 209715200 thin-pool 91 - 422/524288 18338/1638400 - rw discard_passdown queue_if_no_space - + ```bash + $ sudo dmsetup status docker-8:1-123141-pool: 0 209715200 thin-pool 91 + 422/524288 18338/1638400 - rw discard_passdown queue_if_no_space - + ``` - The name is the string before the colon. + The name is the string before the colon. b. Dump the device mapper table first. - $ sudo dmsetup table docker-8:1-123141-pool - 0 209715200 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing + ```bash + $ sudo dmsetup table docker-8:1-123141-pool + 0 209715200 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing + ``` c. Calculate the real total sectors of the thin pool now. - Change the second number of the table info (i.e. the disk end sector) to reflect the new number of 512 byte sectors in the disk. For example, as the new loop size is 200GB, change the second number to 419430400. + Change the second number of the table info (i.e. the disk end sector) to + reflect the new number of 512 byte sectors in the disk. For example, as the + new loop size is 200GB, change the second number to 419430400. d. Reload the thin pool with the new sector number - $ sudo dmsetup suspend docker-8:1-123141-pool && sudo dmsetup reload docker-8:1-123141-pool --table '0 419430400 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing' && sudo dmsetup resume docker-8:1-123141-pool + ```bash + $ sudo dmsetup suspend docker-8:1-123141-pool \ + && sudo dmsetup reload docker-8:1-123141-pool --table '0 419430400 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing' \ + && sudo dmsetup resume docker-8:1-123141-pool + ``` #### The device_tool @@ -506,29 +517,39 @@ disk partition. a. Get the pool name. - $ sudo dmsetup status | grep pool - docker-253:17-1835016-pool: 0 96460800 thin-pool 51593 6270/1048576 701943/753600 - rw no_discard_passdown queue_if_no_space + ```bash + $ sudo dmsetup status | grep pool + docker-253:17-1835016-pool: 0 96460800 thin-pool 51593 6270/1048576 701943/753600 - rw no_discard_passdown queue_if_no_space + ``` - The name is the string before the colon. + The name is the string before the colon. b. Dump the device mapper table. - $ sudo dmsetup table docker-253:17-1835016-pool - 0 96460800 thin-pool 252:0 252:1 128 32768 1 skip_block_zeroing + ```bash + $ sudo dmsetup table docker-253:17-1835016-pool + 0 96460800 thin-pool 252:0 252:1 128 32768 1 skip_block_zeroing + ``` c. Calculate the real total sectors of the thin pool now. we can use `blockdev` to get the real size of data lv. - Change the second number of the table info (i.e. the disk end sector) to - reflect the new number of 512 byte sectors in the disk. For example, as the - new data `lv` size is `264132100096` bytes, change the second number to - `515883008`. + Change the second number of the table info (i.e. the disk end sector) to + reflect the new number of 512 byte sectors in the disk. For example, as the + new data `lv` size is `264132100096` bytes, change the second number to + `515883008`. - $ sudo blockdev --getsize64 /dev/vg-docker/data - 264132100096 + ```bash + $ sudo blockdev --getsize64 /dev/vg-docker/data + 264132100096 + ``` d. Then reload the thin pool with the new sector number. - $ sudo dmsetup suspend docker-253:17-1835016-pool && sudo dmsetup reload docker-253:17-1835016-pool --table '0 515883008 thin-pool 252:0 252:1 128 32768 1 skip_block_zeroing' && sudo dmsetup resume docker-253:17-1835016-pool + ```bash + $ sudo dmsetup suspend docker-253:17-1835016-pool \ + && sudo dmsetup reload docker-253:17-1835016-pool --table '0 515883008 thin-pool 252:0 252:1 128 32768 1 skip_block_zeroing' \ + && sudo dmsetup resume docker-253:17-1835016-pool + ``` ## Device Mapper and Docker performance @@ -570,20 +591,20 @@ There are several other things that impact the performance of the `devicemapper` storage driver. - **The mode.** The default mode for Docker running the `devicemapper` storage -driver is `loop-lvm`. This mode uses sparse files and suffers from poor -performance. It is **not recommended for production**. The recommended mode for - production environments is `direct-lvm` where the storage driver writes -directly to raw block devices. + driver is `loop-lvm`. This mode uses sparse files and suffers from poor + performance. It is **not recommended for production**. The recommended mode + for production environments is `direct-lvm` where the storage driver writes + directly to raw block devices. - **High speed storage.** For best performance you should place the `Data file` - and `Metadata file` on high speed storage such as SSD. This can be direct -attached storage or from a SAN or NAS array. + and `Metadata file` on high speed storage such as SSD. This can be direct + attached storage or from a SAN or NAS array. - **Memory usage.** `devicemapper` is not the most memory efficient Docker -storage driver. Launching *n* copies of the same container loads *n* copies of -its files into memory. This can have a memory impact on your Docker host. As a -result, the `devicemapper` storage driver may not be the best choice for PaaS -and other high density use cases. + storage driver. Launching *n* copies of the same container loads *n* copies + of its files into memory. This can have a memory impact on your Docker host. + As a result, the `devicemapper` storage driver may not be the best choice for + PaaS and other high density use cases. One final point, data volumes provide the best and most predictable performance. This is because they bypass the storage driver and do not incur From 307195b3e15cfa6b4f35a2d369c0e36744c0b8c7 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 14 May 2016 01:00:55 +0200 Subject: [PATCH 03/20] Merge pull request #22727 from clawconduce/master Fix error for env variables example in docker reference (cherry picked from commit 3723b8840671a5f85c43c9c1df6661f751c312fe) Signed-off-by: Sebastiaan van Stijn --- docs/reference/builder.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/builder.md b/docs/reference/builder.md index 9a2f42ea8b..ae9784bf03 100644 --- a/docs/reference/builder.md +++ b/docs/reference/builder.md @@ -361,7 +361,7 @@ RUN /bin/bash -c 'source $HOME/.bashrc ; echo $HOME' > This means that normal shell processing does not happen. For example, > `RUN [ "echo", "$HOME" ]` will not do variable substitution on `$HOME`. > If you want shell processing then either use the *shell* form or execute -> a shell directly, for example: `RUN [ "sh", "-c", "echo", "$HOME" ]`. +> a shell directly, for example: `RUN [ "sh", "-c", "echo $HOME" ]`. The cache for `RUN` instructions isn't invalidated automatically during the next build. The cache for an instruction like From 36ada7d158412e18bbc4673e750e313b0b2b76cf Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Sun, 15 May 2016 05:47:09 +0200 Subject: [PATCH 04/20] Merge pull request #22742 from yongtang/05142016-update-deprecated-docs-for-LXC-built-in-exec-driver Update deprecated docs for LXC built-in exec driver (cherry picked from commit 1bcc42e0386814abdef491afa605ece79cc081d4) Signed-off-by: Sebastiaan van Stijn --- docs/deprecated.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/deprecated.md b/docs/deprecated.md index 2536278f88..b8ee3e5226 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -84,10 +84,9 @@ Because of which, the driver specific log tag options `syslog-tag`, `gelf-tag` a ### LXC built-in exec driver **Deprecated In Release: v1.8** -**Target For Removal In Release: v1.10** +**Removed In Release: v1.10** -The built-in LXC execution driver is deprecated for an external implementation. -The lxc-conf flag and API fields will also be removed. +The built-in LXC execution driver, the lxc-conf flag, and API fields have been removed. ### Old Command Line Options **Deprecated In Release: [v1.8.0](https://github.com/docker/docker/releases/tag/v1.8.0)** From 281f0fa53b11af23c1de52fa4fe659aec315585d Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sun, 15 May 2016 02:15:45 +0200 Subject: [PATCH 05/20] Merge pull request #22743 from yongtang/05142016-typo-in-work-with-networks Fix a typo in work-with-networks.md (cherry picked from commit e333675cd783f3e5e208fefbf71528ed643b9e1c) Signed-off-by: Sebastiaan van Stijn --- docs/userguide/networking/work-with-networks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/userguide/networking/work-with-networks.md b/docs/userguide/networking/work-with-networks.md index 867c5fa52f..481083bbef 100644 --- a/docs/userguide/networking/work-with-networks.md +++ b/docs/userguide/networking/work-with-networks.md @@ -289,7 +289,7 @@ examine its networking stack: $ docker attach container2 ``` -If you look a the container's network stack you should see two Ethernet interfaces, one for the default bridge network and one for the `isolated_nw` network. +If you look at the container's network stack you should see two Ethernet interfaces, one for the default bridge network and one for the `isolated_nw` network. ```bash / # ifconfig From b42d833cd8d6fadc13bd3785abe805640df23b80 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 16 May 2016 01:22:43 +0200 Subject: [PATCH 06/20] Merge pull request #22751 from igrcic/docs-small-typo-reference-attach remove double "using" in reference attach docs (cherry picked from commit 6e12d0720fc6acdf55ee98013b33b6846645f153) Signed-off-by: Sebastiaan van Stijn --- docs/reference/commandline/attach.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/commandline/attach.md b/docs/reference/commandline/attach.md index b28b6fc263..799fe1d176 100644 --- a/docs/reference/commandline/attach.md +++ b/docs/reference/commandline/attach.md @@ -28,7 +28,7 @@ detached process. To stop a container, use `CTRL-c`. This key sequence sends `SIGKILL` to the container. If `--sig-proxy` is true (the default),`CTRL-c` sends a `SIGINT` to the container. You can detach from a container and leave it running using the -using `CTRL-p CTRL-q` key sequence. + `CTRL-p CTRL-q` key sequence. > **Note:** > A process running as PID 1 inside a container is treated specially by From 4971a81f75607836c56e02ac2d1d0767a5679e62 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Mon, 16 May 2016 08:39:31 +0200 Subject: [PATCH 07/20] Merge pull request #22757 from gondor/master Documentation: Updated URL to plugin reference - docker-volume-netshare (cherry picked from commit 37dfd8bc8c83462958fc507937c8baf5d5b06bfc) Signed-off-by: Sebastiaan van Stijn --- docs/extend/plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/extend/plugins.md b/docs/extend/plugins.md index e40c611282..7a3687fced 100644 --- a/docs/extend/plugins.md +++ b/docs/extend/plugins.md @@ -60,7 +60,7 @@ Plugin [Keywhiz plugin](https://github.com/calavera/docker-volume-keywhiz) | A plugin that provides credentials and secret management using Keywhiz as a central repository. [Local Persist Plugin](https://github.com/CWSpear/local-persist) | A volume plugin that extends the default `local` driver's functionality by allowing you specify a mountpoint anywhere on the host, which enables the files to *always persist*, even if the volume is removed via `docker volume rm`. [NetApp Plugin](https://github.com/NetApp/netappdvp) (nDVP) | A volume plugin that provides direct integration with the Docker ecosystem for the NetApp storage portfolio. The nDVP package supports the provisioning and management of storage resources from the storage platform to Docker hosts, with a robust framework for adding additional platforms in the future. -[Netshare plugin](https://github.com/gondor/docker-volume-netshare) | A volume plugin that provides volume management for NFS 3/4, AWS EFS and CIFS file systems. +[Netshare plugin](https://github.com/ContainX/docker-volume-netshare) | A volume plugin that provides volume management for NFS 3/4, AWS EFS and CIFS file systems. [OpenStorage Plugin](https://github.com/libopenstorage/openstorage) | A cluster-aware volume plugin that provides volume management for file and block storage solutions. It implements a vendor neutral specification for implementing extensions such as CoS, encryption, and snapshots. It has example drivers based on FUSE, NFS, NBD and EBS to name a few. [Quobyte Volume Plugin](https://github.com/quobyte/docker-volume) | A volume plugin that connects Docker to [Quobyte](http://www.quobyte.com/containers)'s data center file system, a general-purpose scalable and fault-tolerant storage platform. [REX-Ray plugin](https://github.com/emccode/rexray) | A volume plugin which is written in Go and provides advanced storage functionality for many platforms including VirtualBox, EC2, Google Compute Engine, OpenStack, and EMC. From e3007c51a5b9b144adc4dc716e3b62ca27dd4ad2 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Tue, 17 May 2016 17:06:12 +0200 Subject: [PATCH 08/20] Merge pull request #22768 from mansinahar/run-cmd-doc Update 'run' command doc for better readability. Issue:#22721 (cherry picked from commit 28a436af3641f202287f98e326537a10897da9fa) Signed-off-by: Sebastiaan van Stijn --- docs/reference/commandline/run.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/reference/commandline/run.md b/docs/reference/commandline/run.md index 97553a67dc..544aa37240 100644 --- a/docs/reference/commandline/run.md +++ b/docs/reference/commandline/run.md @@ -227,12 +227,12 @@ system's interfaces. This sets simple (non-array) environmental variables in the container. For illustration all three flags are shown here. Where `-e`, `--env` take an environment variable and -value, or if no `=` is provided, then that variable's current value is passed -through (i.e. `$MYVAR1` from the host is set to `$MYVAR1` in the container). -When no `=` is provided and that variable is not defined in the client's -environment then that variable will be removed from the container's list of -environment variables. -All three flags, `-e`, `--env` and `--env-file` can be repeated. +value, or if no `=` is provided, then that variable's current value, set via +`export`, is passed through (i.e. `$MYVAR1` from the host is set to `$MYVAR1` +in the container). When no `=` is provided and that variable is not defined +in the client's environment then that variable will be removed from the +container's list of environment variables. All three flags, `-e`, `--env` and +`--env-file` can be repeated. Regardless of the order of these three flags, the `--env-file` are processed first, and then `-e`, `--env` flags. This way, the `-e` or `--env` will From e47de0ba4d93027ac2c0e4de934038f41e0e0a5c Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Wed, 18 May 2016 13:58:24 +0200 Subject: [PATCH 09/20] Merge pull request #22778 from DoraALin/10972-docs-Support-for-non-proxied-private-registry doc:http pkg variables info added in pull cmd (cherry picked from commit 9751170f08a143e86709879c70b4a924c3161683) Signed-off-by: Sebastiaan van Stijn --- docs/reference/commandline/pull.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/reference/commandline/pull.md b/docs/reference/commandline/pull.md index 01ec88e8a6..0231422918 100644 --- a/docs/reference/commandline/pull.md +++ b/docs/reference/commandline/pull.md @@ -27,6 +27,15 @@ can `pull` and try without needing to define and configure your own. To download a particular image, or set of images (i.e., a repository), use `docker pull`. +## Proxy configuration + +If you are behind a HTTP proxy server, for example in corporate settings, +before open a connect to registry, you may need to configure the Docker +daemon's proxy settings, using the `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` +environment variables. To set these environment variables on a host using +`systemd`, refer to the [control and configure Docker with systemd](../../admin/systemd.md#http-proxy) +for variables configuration. + ## Examples ### Pull an image from Docker Hub From 08f1f62f41df74657e91c23d26fddb0ac14acb7f Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 18 May 2016 22:26:25 +0200 Subject: [PATCH 10/20] Merge pull request #22821 from zunayed/patch-1 fix duplicate command in uninstall instructions (cherry picked from commit 1691fe6d23b083c67aea120f05c4797220388d59) Signed-off-by: Sebastiaan van Stijn --- docs/installation/linux/fedora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation/linux/fedora.md b/docs/installation/linux/fedora.md index 782adc6735..8d297b4750 100644 --- a/docs/installation/linux/fedora.md +++ b/docs/installation/linux/fedora.md @@ -186,7 +186,7 @@ You can uninstall the Docker software with `dnf`. 1. List the package you have installed. - $ dnf list installed | grep docker dnf list installed | grep docker + $ dnf list installed | grep docker docker-engine.x86_64 1.7.1-0.1.fc21 @/docker-engine-1.7.1-0.1.fc21.el7.x86_64 2. Remove the package. From a9f9a79d5c9f2f062a812bd85f6269869f081917 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 20 May 2016 15:11:35 +0200 Subject: [PATCH 11/20] Merge pull request #22839 from thaJeztah/update-selinux-example Remove MLS example from SELinux example in run reference (cherry picked from commit 74ee26ccebee1f33375967f32529a63e33ee6b73) Signed-off-by: Sebastiaan van Stijn --- docs/reference/run.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/reference/run.md b/docs/reference/run.md index 942bba948f..e889178e34 100644 --- a/docs/reference/run.md +++ b/docs/reference/run.md @@ -612,15 +612,12 @@ with the same logic -- if the original volume was specified with a name it will You can override the default labeling scheme for each container by specifying -the `--security-opt` flag. For example, you can specify the MCS/MLS level, a -requirement for MLS systems. Specifying the level in the following command +the `--security-opt` flag. Specifying the level in the following command allows you to share the same content between containers. $ docker run --security-opt label=level:s0:c100,c200 -it fedora bash -An MLS example might be: - - $ docker run --security-opt label=level:TopSecret -it rhel7 bash +> **Note**: Automatic translation of MLS labels is not currently supported. To disable the security labeling for this container versus running with the `--permissive` flag, use the following command: From d41cd45c3dd3ed1744403806aa3a1fcb2533d5ee Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 21 May 2016 11:52:49 +0200 Subject: [PATCH 12/20] Merge pull request #22876 from Microsoft/jjh/docsclarification Docs: JSON vs Shell clarification (cherry picked from commit e3079b470494a596bc8b35bc682e7c82ac9f0f9f) Signed-off-by: Sebastiaan van Stijn --- docs/reference/builder.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/reference/builder.md b/docs/reference/builder.md index ae9784bf03..d2d831a821 100644 --- a/docs/reference/builder.md +++ b/docs/reference/builder.md @@ -362,6 +362,15 @@ RUN /bin/bash -c 'source $HOME/.bashrc ; echo $HOME' > `RUN [ "echo", "$HOME" ]` will not do variable substitution on `$HOME`. > If you want shell processing then either use the *shell* form or execute > a shell directly, for example: `RUN [ "sh", "-c", "echo $HOME" ]`. +> +> **Note**: +> In the *JSON* form, it is necessary to escape backslashes. This is +> particularly relevant on Windows where the backslash is the path seperator. +> The following line would otherwise be treated as *shell* form due to not +> being valid JSON, and fail in an unexpected way: +> `RUN ["c:\windows\system32\tasklist.exe"]` +> The correct syntax for this example is: +> `RUN ["c:\\windows\\system32\\tasklist.exe"]` The cache for `RUN` instructions isn't invalidated automatically during the next build. The cache for an instruction like From 0626fa4555df98eb75e87308204cfeb0eccacfcc Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sun, 22 May 2016 15:54:21 +0200 Subject: [PATCH 13/20] Merge pull request #22885 from yongtang/05212016-typo-in-dockernetworks-md Fix a typos in docs of networking guide (cherry picked from commit c0c36bc15096cb7a81dfb9556b1300d0cd94013a) Signed-off-by: Sebastiaan van Stijn --- docs/userguide/networking/dockernetworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/userguide/networking/dockernetworks.md b/docs/userguide/networking/dockernetworks.md index 465470e737..22b8b346a3 100644 --- a/docs/userguide/networking/dockernetworks.md +++ b/docs/userguide/networking/dockernetworks.md @@ -57,7 +57,7 @@ docker0 Link encap:Ethernet HWaddr 02:42:47:bc:3a:eb RX bytes:1100 (1.1 KB) TX bytes:648 (648.0 B) ``` -The `none` network adds a container to a container-specific network stack. That container lacks a network interface. Attaching to such a container and looking at it's stack you see this: +The `none` network adds a container to a container-specific network stack. That container lacks a network interface. Attaching to such a container and looking at its stack you see this: ``` $ docker attach nonenetcontainer From 9114864ace04a61953659d67145cbe605d25b829 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Tue, 24 May 2016 14:06:02 +0200 Subject: [PATCH 14/20] Merge pull request #22900 from AkihiroSuda/fix22020 update docs/reference/commandline/cp.md (cherry picked from commit 6a385a00226dc7d8a35406ae284bb6731444d524) Signed-off-by: Sebastiaan van Stijn --- docs/reference/commandline/cp.md | 12 +++++++++++- man/docker-cp.1.md | 11 ++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/reference/commandline/cp.md b/docs/reference/commandline/cp.md index 841aeb36e0..8afabc95bc 100644 --- a/docs/reference/commandline/cp.md +++ b/docs/reference/commandline/cp.md @@ -81,7 +81,17 @@ you must be explicit with a relative or absolute path, for example: `/path/to/file:name.txt` or `./file:name.txt` It is not possible to copy certain system files such as resources under -`/proc`, `/sys`, `/dev`, and mounts created by the user in the container. +`/proc`, `/sys`, `/dev`, [tmpfs](run.md#mount-tmpfs-tmpfs), and mounts created by +the user in the container. However, you can still copy such files by manually +running `tar` in `docker exec`. For example (consider `SRC_PATH` and `DEST_PATH` +are directories): + + $ docker exec foo tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | tar Cxf DEST_PATH - + +or + + $ tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i foo tar Cxf DEST_PATH - + Using `-` as the `SRC_PATH` streams the contents of `STDIN` as a tar archive. The command extracts the content of the tar to the `DEST_PATH` in container's diff --git a/man/docker-cp.1.md b/man/docker-cp.1.md index 84d64c2688..949d60bb8b 100644 --- a/man/docker-cp.1.md +++ b/man/docker-cp.1.md @@ -78,7 +78,16 @@ you must be explicit with a relative or absolute path, for example: `/path/to/file:name.txt` or `./file:name.txt` It is not possible to copy certain system files such as resources under -`/proc`, `/sys`, `/dev`, and mounts created by the user in the container. +`/proc`, `/sys`, `/dev`, tmpfs, and mounts created by the user in the container. +However, you can still copy such files by manually running `tar` in `docker exec`. +For example (consider `SRC_PATH` and `DEST_PATH` are directories): + + $ docker exec foo tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | tar Cxf DEST_PATH - + +or + + $ tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i foo tar Cxf DEST_PATH - + Using `-` as the `SRC_PATH` streams the contents of `STDIN` as a tar archive. The command extracts the content of the tar to the `DEST_PATH` in container's From 4efcbf57843a45881e8ece7a2f58cea9c025601c Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Tue, 24 May 2016 15:33:27 +0200 Subject: [PATCH 15/20] Merge pull request #22906 from nshalman/patch-1 Clarification about 'docker build --build-arg' (cherry picked from commit ce07eac570e90ed8aa69472bae463902c075e078) Signed-off-by: Sebastiaan van Stijn --- docs/reference/commandline/build.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/reference/commandline/build.md b/docs/reference/commandline/build.md index 4530f77bb1..f0f30a0ced 100644 --- a/docs/reference/commandline/build.md +++ b/docs/reference/commandline/build.md @@ -298,6 +298,9 @@ accessed like regular environment variables in the `RUN` instruction of the Dockerfile. Also, these values don't persist in the intermediate or final images like `ENV` values do. +Using this flag will not alter the output you see when the `ARG` lines from the +Dockerfile are echoed during the build process. + For detailed information on using `ARG` and `ENV` instructions, see the [Dockerfile reference](../builder.md). From c70c8f1ed917fc64354a00ef1e2b02461ee3fb62 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Tue, 24 May 2016 08:38:40 +0200 Subject: [PATCH 16/20] Merge pull request #22928 from friism/patch-3 remove duplicated text (cherry picked from commit bf7bae9662a2de9cdb689ac813c503fe1157d6da) Signed-off-by: Sebastiaan van Stijn --- docs/reference/run.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/run.md b/docs/reference/run.md index e889178e34..447ae12cda 100644 --- a/docs/reference/run.md +++ b/docs/reference/run.md @@ -1430,7 +1430,7 @@ The `host-src` can either be an absolute path or a `name` value. If you supply an absolute path for the `host-dir`, Docker bind-mounts to the path you specify. If you supply a `name`, Docker creates a named volume by that `name`. -A `name` value must start with start with an alphanumeric character, +A `name` value must start with an alphanumeric character, followed by `a-z0-9`, `_` (underscore), `.` (period) or `-` (hyphen). An absolute path starts with a `/` (forward slash). From fa29ecbcebfccd246e91c9dd6b31535783d941c1 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 25 May 2016 20:56:54 +0200 Subject: [PATCH 17/20] Merge pull request #22987 from Microsoft/jjh/labeldocs Docs: Label clarification (cherry picked from commit bb80563a8123824bed23c36698e6fa01317bbe5f) Signed-off-by: Sebastiaan van Stijn --- docs/userguide/labels-custom-metadata.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/userguide/labels-custom-metadata.md b/docs/userguide/labels-custom-metadata.md index 4c9a1a114c..c4b6d27a6a 100644 --- a/docs/userguide/labels-custom-metadata.md +++ b/docs/userguide/labels-custom-metadata.md @@ -22,7 +22,7 @@ times but with different values, newer labels overwrite previous labels. Docker uses the last `key=value` you supply. >**Note:** Support for daemon-labels was added in Docker 1.4.1. Labels on ->containers and images are new in Docker 1.6.0 +>containers and images were added in Docker 1.6.0 ## Label keys (namespaces) From 3bdc7244a8ae9b3ea609709ab95203a2fa447d5b Mon Sep 17 00:00:00 2001 From: Matt Bentley Date: Wed, 25 May 2016 08:45:51 -0400 Subject: [PATCH 18/20] Fix thin pool devicemapper docs overwritten Signed-off-by: Matt Bentley (cherry picked from commit 79205c3f061c4b690a459cb2b08b6a7df7af327c) Signed-off-by: Sebastiaan van Stijn --- .../storagedriver/device-mapper-driver.md | 228 ++++++++++-------- .../storagedriver/images/lsblk-diagram.jpg | Bin 0 -> 95220 bytes 2 files changed, 134 insertions(+), 94 deletions(-) create mode 100644 docs/userguide/storagedriver/images/lsblk-diagram.jpg diff --git a/docs/userguide/storagedriver/device-mapper-driver.md b/docs/userguide/storagedriver/device-mapper-driver.md index fe3a7fbbb4..df089d319d 100644 --- a/docs/userguide/storagedriver/device-mapper-driver.md +++ b/docs/userguide/storagedriver/device-mapper-driver.md @@ -212,7 +212,7 @@ a `direct-lvm` configuration. > and have images you want to keep, `push` them Docker Hub or your private > Docker Trusted Registry before attempting this procedure. -The procedure below will create a 90GB data volume and 4GB metadata volume to +The procedure below will create a logical volume configured as a thin pool to use as backing for the storage pool. It assumes that you have a spare block device at `/dev/xvdf` with enough free space to complete the task. The device identifier and volume sizes may be be different in your environment and you @@ -221,106 +221,146 @@ assumes that the Docker daemon is in the `stopped` state. 1. Log in to the Docker host you want to configure and stop the Docker daemon. -2. If it exists, delete your existing image store by removing the -`/var/lib/docker` directory. +2. Install the LVM2 package. + The LVM2 package includes the userspace toolset that provides logical volume + management facilities on linux. + +3. Create a physical volume replacing `/dev/xvdf` with your block device. ```bash - $ sudo rm -rf /var/lib/docker + $ pvcreate /dev/xvdf ``` -3. Create an LVM physical volume (PV) on your spare block device using the -`pvcreate` command. +4. Create a 'docker' volume group. ```bash - $ sudo pvcreate /dev/xvdf - Physical volume `/dev/xvdf` successfully created + $ vgcreate docker /dev/xvdf ``` - The device identifier may be different on your system. Remember to substitute - your value in the command above. If your host is running on AWS EC2, you may - need to install `lvm2` and attach an EBS device to use this procedure. +5. Create a thin pool named `thinpool`. -4. Create a new volume group (VG) called `vg-docker` using the PV created in -the previous step. + In this example, the data logical is 95% of the 'docker' volume group size. + Leaving this free space allows for auto expanding of either the data or + metadata if space runs low as a temporary stopgap. ```bash - $ sudo vgcreate vg-docker /dev/xvdf - Volume group `vg-docker` successfully created + $ lvcreate --wipesignatures y -n thinpool docker -l 95%VG + $ lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG ``` -5. Create a new 90GB logical volume (LV) called `data` from space in the -`vg-docker` volume group. +6. Convert the pool to a thin pool. ```bash - $ sudo lvcreate -L 90G -n data vg-docker - Logical volume `data` created. + $ lvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta ``` - The command creates an LVM logical volume called `data` and an associated - block device file at `/dev/vg-docker/data`. In a later step, you instruct the - `devicemapper` storage driver to use this block device to store image and - container data. - - If you receive a signature detection warning, make sure you are working on - the correct devices before continuing. Signature warnings indicate that the - device you're working on is currently in use by LVM or has been used by LVM in - the past. - -6. Create a new logical volume (LV) called `metadata` from space in the -`vg-docker` volume group. +7. Configure autoextension of thin pools via an `lvm` profile. ```bash - $ sudo lvcreate -L 4G -n metadata vg-docker - Logical volume `metadata` created. + $ vi /etc/lvm/profile/docker-thinpool.profile ``` - This creates an LVM logical volume called `metadata` and an associated - block device file at `/dev/vg-docker/metadata`. In the next step you instruct - the `devicemapper` storage driver to use this block device to store image and - container metadata. +8. Specify 'thin_pool_autoextend_threshold' value. -7. Start the Docker daemon with the `devicemapper` storage driver and the -`--storage-opt` flags. + The value should be the percentage of space used before `lvm` attempts + to autoextend the available space (100 = disabled). - The `data` and `metadata` devices that you pass to the `--storage-opt` - options were created in the previous steps. + ``` + thin_pool_autoextend_threshold = 80 + ``` + +9. Modify the `thin_pool_autoextend_percent` for when thin pool autoextension occurs. + + The value's setting is the perentage of space to increase the thin pool (100 = + disabled) + + ``` + thin_pool_autoextend_percent = 20 + ``` + +10. Check your work, your `docker-thinpool.profile` file should appear similar to the following: + + An example `/etc/lvm/profile/docker-thinpool.profile` file: + + ``` + activation { + thin_pool_autoextend_threshold=80 + thin_pool_autoextend_percent=20 + } + ``` + +11. Apply your new lvm profile ```bash - $ sudo docker daemon --storage-driver=devicemapper --storage-opt dm.datadev=/dev/vg-docker/data --storage-opt dm.metadatadev=/dev/vg-docker/metadata & - [1] 2163 - [root@ip-10-0-0-75 centos]# INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) - INFO[0027] Option DefaultDriver: bridge - INFO[0027] Option DefaultNetwork: bridge - <-- output truncated --> - INFO[0027] Daemon has completed initialization - INFO[0027] Docker daemon commit=1b09a95 graphdriver=aufs version=1.11.0-dev + $ lvchange --metadataprofile docker-thinpool docker/thinpool ``` - It is also possible to set the `--storage-driver` and `--storage-opt` flags - in the Docker config file and start the daemon normally using the `service` or - `systemd` commands. - -8. Use the `docker info` command to verify that the daemon is using `data` and -`metadata` devices you created. +12. Verify the `lv` is monitored. ```bash - $ sudo docker info - INFO[0180] GET /v1.20/info - Containers: 0 - Images: 0 - Storage Driver: devicemapper - Pool Name: docker-202:1-1032-pool - Pool Blocksize: 65.54 kB - Backing Filesystem: xfs - Data file: /dev/vg-docker/data - Metadata file: /dev/vg-docker/metadata - [...] + $ lvs -o+seg_monitor ``` - The output of the command above shows the storage driver as `devicemapper`. - The last two lines also confirm that the correct devices are being used for - the `Data file` and the `Metadata file`. +13. If the Docker daemon was previously started, clear your graph driver directory. + + Clearing your graph driver removes any images, containers, and volumes in your + Docker installation. + + ```bash + $ rm -rf /var/lib/docker/* + ``` + +14. Configure the Docker daemon with specific devicemapper options. + + There are two ways to do this. You can set options on the commmand line if you start the daemon there: + + ```bash + --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt dm.use_deferred_removal=true + ``` + + You can also set them for startup in the `daemon.json` configuration, for example: + + ```json + { + "storage-driver": "devicemapper", + "storage-opts": [ + "dm.thinpooldev=/dev/mapper/docker-thinpool", + "dm.use_deferred_removal=true" + ] + } + ``` + +15. If using systemd and modifying the daemon configuration via unit or drop-in file, reload systemd to scan for changes. + + ```bash + $ systemctl daemon-reload + ``` + +16. Start the Docker daemon. + + ```bash + $ systemctl start docker + ``` + +After you start the Docker daemon, ensure you monitor your thin pool and volume +group free space. While the volume group will auto-extend, it can still fill +up. To monitor logical volumes, use `lvs` without options or `lvs -a` to see tha +data and metadata sizes. To monitor volume group free space, use the `vgs` command. + +Logs can show the auto-extension of the thin pool when it hits the threshold, to +view the logs use: + +```bash +$ journalctl -fu dm-event.service +``` + +If you run into repeated problems with thin pool, you can use the +`dm.min_free_space` option to tune the Engine behavior. This value ensures that +operations fail with a warning when the free space is at or near the minimum. +For information, see the storage driver options in the Engine daemon reference. + ### Examine devicemapper structures on the host @@ -329,20 +369,20 @@ You can use the `lsblk` command to see the device files created above and the ```bash $ sudo lsblk -NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT -xvda 202:0 0 8G 0 disk -└─xvda1 202:1 0 8G 0 part / -xvdf 202:80 0 10G 0 disk -├─vg--docker-data 253:0 0 90G 0 lvm -│ └─docker-202:1-1032-pool 253:2 0 10G 0 dm -└─vg--docker-metadata 253:1 0 4G 0 lvm - └─docker-202:1-1032-pool 253:2 0 10G 0 dm +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT +xvda 202:0 0 8G 0 disk +└─xvda1 202:1 0 8G 0 part / +xvdf 202:80 0 10G 0 disk +├─vg--docker-data 253:0 0 90G 0 lvm +│ └─docker-202:1-1032-pool 253:2 0 10G 0 dm +└─vg--docker-metadata 253:1 0 4G 0 lvm + └─docker-202:1-1032-pool 253:2 0 10G 0 dm ``` The diagram below shows the image from prior examples updated with the detail from the `lsblk` command above. -![](http://farm1.staticflickr.com/703/22116692899_0471e5e160_b.jpg) +![](images/lsblk-diagram.jpg) In the diagram, the pool is named `Docker-202:1-1032-pool` and spans the `data` and `metadata` devices created earlier. The `devicemapper` constructs the pool @@ -427,12 +467,10 @@ The `Data Space` values show that the pool is 100GB total. This example extends 3. Verify the file size changed. ```bash - $ sudo ls -al /var/lib/docker/devicemapper/devicemapper/ - total 1175492 - drwx------ 2 root root 4096 Mar 29 02:45 . - drwx------ 5 root root 4096 Mar 29 02:48 .. - -rw------- 1 root root 214748364800 Mar 31 11:20 data - -rw------- 1 root root 2147483648 Mar 31 11:17 metadata + $ sudo ls -lh /var/lib/docker/devicemapper/devicemapper/ + total 1.2G + -rw------- 1 root root 200G Apr 14 08:47 data + -rw------- 1 root root 2.0G Apr 19 13:27 metadata ``` 4. Reload data loop device @@ -450,13 +488,14 @@ The `Data Space` values show that the pool is 100GB total. This example extends a. Get the pool name first. ```bash - $ sudo dmsetup status docker-8:1-123141-pool: 0 209715200 thin-pool 91 + $ sudo dmsetup status | grep pool + docker-8:1-123141-pool: 0 209715200 thin-pool 91 422/524288 18338/1638400 - rw discard_passdown queue_if_no_space - ``` The name is the string before the colon. - b. Dump the device mapper table first. + b. Dump the device mapper table first. ```bash $ sudo dmsetup table docker-8:1-123141-pool @@ -469,6 +508,7 @@ The `Data Space` values show that the pool is 100GB total. This example extends reflect the new number of 512 byte sectors in the disk. For example, as the new loop size is 200GB, change the second number to 419430400. + d. Reload the thin pool with the new sector number ```bash @@ -533,7 +573,7 @@ disk partition. c. Calculate the real total sectors of the thin pool now. we can use `blockdev` to get the real size of data lv. - Change the second number of the table info (i.e. the disk end sector) to + Change the second number of the table info (i.e. the number of sectors) to reflect the new number of 512 byte sectors in the disk. For example, as the new data `lv` size is `264132100096` bytes, change the second number to `515883008`. @@ -592,8 +632,8 @@ There are several other things that impact the performance of the - **The mode.** The default mode for Docker running the `devicemapper` storage driver is `loop-lvm`. This mode uses sparse files and suffers from poor - performance. It is **not recommended for production**. The recommended mode - for production environments is `direct-lvm` where the storage driver writes + performance. It is **not recommended for production**. The recommended mode for + production environments is `direct-lvm` where the storage driver writes directly to raw block devices. - **High speed storage.** For best performance you should place the `Data file` @@ -601,10 +641,10 @@ There are several other things that impact the performance of the attached storage or from a SAN or NAS array. - **Memory usage.** `devicemapper` is not the most memory efficient Docker - storage driver. Launching *n* copies of the same container loads *n* copies - of its files into memory. This can have a memory impact on your Docker host. - As a result, the `devicemapper` storage driver may not be the best choice for - PaaS and other high density use cases. + storage driver. Launching *n* copies of the same container loads *n* copies of + its files into memory. This can have a memory impact on your Docker host. As a + result, the `devicemapper` storage driver may not be the best choice for PaaS + and other high density use cases. One final point, data volumes provide the best and most predictable performance. This is because they bypass the storage driver and do not incur diff --git a/docs/userguide/storagedriver/images/lsblk-diagram.jpg b/docs/userguide/storagedriver/images/lsblk-diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..641f780535a591d2e7bbdf02e4b255f227f87b5a GIT binary patch literal 95220 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 Dj~D|~ literal 0 HcmV?d00001 From 7abc60a93bfdc4df792c84763ba90e3003c6b8bb Mon Sep 17 00:00:00 2001 From: Sven Dowideit Date: Tue, 3 May 2016 10:48:29 +1000 Subject: [PATCH 19/20] Merge pull request #22394 from SvenDowideit/use-docs-base-oss convert docs Dockerfiles to use docs/base:oss (cherry picked from commit 1c0edf6c3953d0f298d3dc1ec19f71f0b3b57b19) Signed-off-by: Sebastiaan van Stijn --- docs/Dockerfile | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/docs/Dockerfile b/docs/Dockerfile index 3690d1572a..ce6e6ff255 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -1,17 +1,8 @@ -FROM docs/base:latest +FROM docs/base:oss MAINTAINER Mary Anthony (@moxiegirl) -RUN svn checkout https://github.com/docker/compose/trunk/docs /docs/content/compose -RUN svn checkout https://github.com/docker/swarm/trunk/docs /docs/content/swarm -RUN svn checkout https://github.com/docker/machine/trunk/docs /docs/content/machine -RUN svn checkout https://github.com/docker/distribution/trunk/docs /docs/content/registry -RUN svn checkout https://github.com/docker/notary/trunk/docs /docs/content/notary -RUN svn checkout https://github.com/docker/kitematic/trunk/docs /docs/content/kitematic -RUN svn checkout https://github.com/docker/toolbox/trunk/docs /docs/content/toolbox -RUN svn checkout https://github.com/docker/opensource/trunk/docs /docs/content/opensource - ENV PROJECT=engine # To get the git info for this repo COPY . /src - +RUN rm -r /docs/content/$PROJECT/ COPY . /docs/content/$PROJECT/ From a54af42edb484715eca544f690326206cc0aa62c Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Sun, 22 May 2016 17:49:08 +0200 Subject: [PATCH 20/20] Merge pull request #22890 from thaJeztah/docs/slashes fix docs not building if branch-name contains slashes (cherry picked from commit 07f79621ea3aef5220d6c275fcab03bb4ed6ce22) Signed-off-by: Sebastiaan van Stijn --- docs/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 711462ea5b..e2ab871de2 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -24,9 +24,8 @@ HUGO_BASE_URL=$(shell test -z "$(DOCKER_IP)" && echo localhost || echo "$(DOCKER HUGO_BIND_IP=0.0.0.0 GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) -DOCKER_IMAGE := docker$(if $(GIT_BRANCH),:$(GIT_BRANCH)) -DOCKER_DOCS_IMAGE := docs-base$(if $(GIT_BRANCH),:$(GIT_BRANCH)) - +GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g") +DOCKER_DOCS_IMAGE := docker-docs$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN)) DOCKER_RUN_DOCS := docker run --rm -it $(DOCS_MOUNT) -e AWS_S3_BUCKET -e NOCACHE