followup to incorporate review comments per previous reviews on PR#29561
(cherry picked from commit b39b0c4596d424cd98856fb633183f30807ad0a2)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -84,6 +84,28 @@ be done to get it running. |
| 84 | 84 |
|
| 85 | 85 |
*Also known as : docker-compose, fig* |
| 86 | 86 |
|
| 87 |
+## copy-on-write |
|
| 88 |
+ |
|
| 89 |
+Docker uses a |
|
| 90 |
+[copy-on-write](https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/#/the-copy-on-write-strategy) |
|
| 91 |
+technique and a [union file system](#union-file-system) for both images and |
|
| 92 |
+containers to optimize resources and speed performance. Multiple copies of an |
|
| 93 |
+entity share the same instance and each one makes only specific changes to its |
|
| 94 |
+unique layer. |
|
| 95 |
+ |
|
| 96 |
+Multiple containers can share access to the same image, and make |
|
| 97 |
+container-specific changes on a writable layer which is deleted when |
|
| 98 |
+the container is removed. This speeds up container start times and performance. |
|
| 99 |
+ |
|
| 100 |
+Images are essentially layers of filesystems typically predicated on a base |
|
| 101 |
+image under a writable layer, and built up with layers of differences from the |
|
| 102 |
+base image. This minimizes the footprint of the image and enables shared |
|
| 103 |
+development. |
|
| 104 |
+ |
|
| 105 |
+For more about copy-on-write in the context of Docker, see [Understand images, |
|
| 106 |
+containers, and storage |
|
| 107 |
+drivers](https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/). |
|
| 108 |
+ |
|
| 87 | 109 |
## container |
| 88 | 110 |
|
| 89 | 111 |
A container is a runtime instance of a [docker image](#image). |
| ... | ... |
@@ -122,19 +144,21 @@ lightweight Docker development environment designed specifically for the Mac. A |
| 122 | 122 |
native Mac application, Docker for Mac uses the macOS Hypervisor framework, |
| 123 | 123 |
networking, and filesystem. It's the best solution if you want to build, debug, |
| 124 | 124 |
test, package, and ship Dockerized applications on a Mac. Docker for Mac |
| 125 |
-supersedes [Docker Toolbox](#toolbox) as state-of-the-art Docker for macOS. |
|
| 125 |
+supersedes [Docker Toolbox](#toolbox) as state-of-the-art Docker on macOS. |
|
| 126 |
+ |
|
| 126 | 127 |
|
| 127 | 128 |
## Docker for Windows |
| 128 | 129 |
|
| 129 | 130 |
[Docker for Windows](https://docs.docker.com/docker-for-windows/) is an |
| 130 | 131 |
easy-to-install, lightweight Docker development environment designed |
| 131 |
-specifically for Windows systems. Docker for Windows uses Microsoft Hyper-V, and |
|
| 132 |
-runs as a native Windows app. It works with Windows Server 2016, and gives you |
|
| 133 |
-the ability to set up and run Windows containers as well as the standard Linux |
|
| 134 |
-containers (with an option to switch between the two). Docker for Windows is the |
|
| 135 |
-best solution if you want to build, debug, test, package, and ship Dockerized |
|
| 136 |
-applications on Windows machines. It supersedes [Docker Toolbox](#toolbox) as |
|
| 137 |
-state-of-the-art Docker on Windows. |
|
| 132 |
+specifically for Windows 10 systems that support Microsoft Hyper-V |
|
| 133 |
+(Professional, Enterprise and Education). Docker for Windows uses Hyper-V for |
|
| 134 |
+virtualization, and runs as a native Windows app. It works with Windows Server |
|
| 135 |
+2016, and gives you the ability to set up and run Windows containers as well as |
|
| 136 |
+the standard Linux containers, with an option to switch between the two. Docker |
|
| 137 |
+for Windows is the best solution if you want to build, debug, test, package, and |
|
| 138 |
+ship Dockerized applications from Windows machines. Docker for Windows |
|
| 139 |
+supersedes [Docker Toolbox](#toolbox) as state-of-the-art Docker on Windows. |
|
| 138 | 140 |
|
| 139 | 141 |
## Docker Hub |
| 140 | 142 |
|
| ... | ... |
@@ -318,13 +342,25 @@ For Windows 10 systems that support Microsoft Hyper-V (Professional, Enterprise |
| 318 | 318 |
and Education), [Docker for |
| 319 | 319 |
Windows](https://docs.docker.com/docker-for-windows/) is the better solution. |
| 320 | 320 |
|
| 321 |
- |
|
| 322 | 321 |
## Union file system |
| 323 | 322 |
|
| 324 |
-Union file systems, or UnionFS, are file systems that operate by creating |
|
| 325 |
-layers, making them very lightweight and fast. Docker uses union file systems to |
|
| 326 |
-provide the building blocks for containers. |
|
| 327 |
- |
|
| 323 |
+Union file systems implement a [union |
|
| 324 |
+mount](https://en.wikipedia.org/wiki/Union_mount) and operate by creating |
|
| 325 |
+layers. Docker uses union file systems in conjunction with |
|
| 326 |
+[copy-on-write](#copy-on-write) techniques to provide the building blocks for |
|
| 327 |
+containers, making them very lightweight and fast. |
|
| 328 |
+ |
|
| 329 |
+For more on Docker and union file systems, see [Docker and AUFS in |
|
| 330 |
+practice](https://docs.docker.com/engine/userguide/storagedriver/aufs-driver/), |
|
| 331 |
+[Docker and Btrfs in |
|
| 332 |
+practice](https://docs.docker.com/engine/userguide/storagedriver/btrfs-driver/), |
|
| 333 |
+and [Docker and OverlayFS in |
|
| 334 |
+practice](https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/) |
|
| 335 |
+ |
|
| 336 |
+Example implementations of union file systems are |
|
| 337 |
+[UnionFS](https://en.wikipedia.org/wiki/UnionFS), |
|
| 338 |
+[AUFS](https://en.wikipedia.org/wiki/Aufs), and |
|
| 339 |
+[Btrfs](https://btrfs.wiki.kernel.org/index.php/Main_Page). |
|
| 328 | 340 |
|
| 329 | 341 |
## virtual machine |
| 330 | 342 |
|