mirror of https://github.com/docker/docs.git
added Compose topics on caching options for performance (#3932)
* added Compose topics on caching options for performance Signed-off-by: Victoria Bialas <victoria.bialas@docker.com> * updated title for Compose topic Signed-off-by: Victoria Bialas <victoria.bialas@docker.com> * line wrap per review Signed-off-by: Victoria Bialas <victoria.bialas@docker.com>
This commit is contained in:
parent
2e0235f9b8
commit
1c6ff26042
|
@ -1426,9 +1426,50 @@ services:
|
||||||
constraints: [node.role == manager]
|
constraints: [node.role == manager]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Caching options for volume mounts (Docker for Mac)
|
||||||
|
|
||||||
|
On Docker 17.04 CE Edge and up, including 17.06 CE Edge and Stable, you can
|
||||||
|
configure container-and-host consistency requirements for bind-mounted
|
||||||
|
directories in Compose files to allow for better performance on read/write of
|
||||||
|
volume mounts. These options address issues specific to `osxfs` file sharing,
|
||||||
|
and therefore are only applicable on Docker for Mac.
|
||||||
|
|
||||||
|
The flags are:
|
||||||
|
|
||||||
|
* `consistent`: Full consistency. The container runtime and the
|
||||||
|
host maintain an identical view of the mount at all times. This is the default.
|
||||||
|
|
||||||
|
* `cached`: The host's view of the mount is authoritative. There may be
|
||||||
|
delays before updates made on the host are visible within a container.
|
||||||
|
|
||||||
|
* `delegated`: The container runtime's view of the mount is
|
||||||
|
authoritative. There may be delays before updates made in a container
|
||||||
|
are visible on the host.
|
||||||
|
|
||||||
|
Here is an example of configuring a volume as `cached`:
|
||||||
|
|
||||||
|
```
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
php:
|
||||||
|
image: php:7.1-fpm
|
||||||
|
ports:
|
||||||
|
- 9000
|
||||||
|
volumes:
|
||||||
|
- .:/var/www/project:cached
|
||||||
|
```
|
||||||
|
|
||||||
|
Full detail on these flags, the problems they solve, and their
|
||||||
|
`docker run` counterparts is in the Docker for Mac topic [Performance tuning for
|
||||||
|
volume mounts (shared filesystems)](/docker-for-mac/osxfs-caching.md).
|
||||||
|
|
||||||
|
|
||||||
### restart
|
### restart
|
||||||
|
|
||||||
`no` is the default restart policy, and it will not restart a container under any circumstance. When `always` is specified, the container always restarts. The `on-failure` policy restarts a container if the exit code indicates an on-failure error.
|
`no` is the default restart policy, and it will not restart a container under
|
||||||
|
any circumstance. When `always` is specified, the container always restarts. The
|
||||||
|
`on-failure` policy restarts a container if the exit code indicates an
|
||||||
|
on-failure error.
|
||||||
|
|
||||||
restart: "no"
|
restart: "no"
|
||||||
restart: always
|
restart: always
|
||||||
|
|
|
@ -15,7 +15,22 @@ of mounted volume access on Docker for Mac. These options begin to solve some of
|
||||||
the challenges discussed in [Performance issues, solutions, and
|
the challenges discussed in [Performance issues, solutions, and
|
||||||
roadmap](/docker-for-mac/osxfs.md#performance-issues-solutions-and-roadmap).
|
roadmap](/docker-for-mac/osxfs.md#performance-issues-solutions-and-roadmap).
|
||||||
|
|
||||||
> **Tip:** Release notes for Docker CE Edge 17.04 are [here](https://github.com/moby/moby/releases/tag/v17.04.0-ce), and the associated pull request for the additional `docker run -v` flags is [here](https://github.com/moby/moby/pull/31047).
|
> **Tip:** Release notes for Docker CE Edge 17.04 are
|
||||||
|
[here](https://github.com/moby/moby/releases/tag/v17.04.0-ce), and the
|
||||||
|
associated pull request for the additional `docker run -v` flags is
|
||||||
|
[here](https://github.com/moby/moby/pull/31047).
|
||||||
|
|
||||||
|
The following topics describe the challenges of bind-mounted volumes on `osxfs`,
|
||||||
|
and the caching options provided to optimize performance.
|
||||||
|
|
||||||
|
This blog post on [Docker on Mac
|
||||||
|
Performance](https://stories.amazee.io/docker-on-mac-performance-docker-machine-vs-docker-for-mac-4c64c0afdf99)
|
||||||
|
gives a nice, quick summary.
|
||||||
|
|
||||||
|
For information on how to configure these options in a Compose file, see
|
||||||
|
[Caching options for volume
|
||||||
|
mounts](/compose/compose-file.md#caching-options-for-volume-mounts-docker-for-mac)
|
||||||
|
the Docker Compose topics.
|
||||||
|
|
||||||
## Performance implications of host-container file system consistency
|
## Performance implications of host-container file system consistency
|
||||||
|
|
||||||
|
@ -67,9 +82,10 @@ there is no need for writes to build artifacts within the container to
|
||||||
be immediately reflected on the host file system. Distinguishing between
|
be immediately reflected on the host file system. Distinguishing between
|
||||||
these two cases makes it possible to significantly improve performance.
|
these two cases makes it possible to significantly improve performance.
|
||||||
|
|
||||||
There are three broad scenarios to consider, based on which you can dial in the level of consistency you need. In each case, the container
|
There are three broad scenarios to consider, based on which you can dial in the
|
||||||
has an internally-consistent view of bind-mounted directories, but in
|
level of consistency you need. In each case, the container has an
|
||||||
two cases temporary discrepancies are allowed between container and host.
|
internally-consistent view of bind-mounted directories, but in two cases
|
||||||
|
temporary discrepancies are allowed between container and host.
|
||||||
|
|
||||||
* `consistent`: perfect consistency
|
* `consistent`: perfect consistency
|
||||||
(host and container have an identical view of the mount at all times)
|
(host and container have an identical view of the mount at all times)
|
||||||
|
@ -82,10 +98,12 @@ two cases temporary discrepancies are allowed between container and host.
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
Each of these configurations (`consistent`, `cached`, `delegated`) can be specified as a suffix to the [`-v`](https://docs.docker.com/engine/reference/run/#volume-shared-filesystems)
|
Each of these configurations (`consistent`, `cached`, `delegated`) can be
|
||||||
option of [`docker run`](https://docs.docker.com/engine/reference/run.md).
|
specified as a suffix to the
|
||||||
For example, to bind-mount `/Users/yallop/project` in a container under
|
[`-v`](https://docs.docker.com/engine/reference/run/#volume-shared-filesystems)
|
||||||
the path `/project`, you might run the following command:
|
option of [`docker run`](https://docs.docker.com/engine/reference/run.md). For
|
||||||
|
example, to bind-mount `/Users/yallop/project` in a container under the path
|
||||||
|
`/project`, you might run the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run -v /Users/yallop/project:/project:cached alpine command
|
docker run -v /Users/yallop/project:/project:cached alpine command
|
||||||
|
|
Loading…
Reference in New Issue