Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update "select a storage driver" with current status #7669

Merged
merged 6 commits into from
Nov 13, 2018
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 48 additions & 50 deletions storage/storagedriver/select-storage-driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,56 +21,54 @@ After you have read the [storage driver overview](index.md), the
next step is to choose the best storage driver for your workloads. In making
this decision, there are three high-level factors to consider:

- If multiple storage drivers are supported in your kernel, Docker has a
prioritized list of which storage driver to use if no storage driver is
explicitly configured, assuming that the prerequisites for that storage driver
are met:

- Try to use the storage driver with the best overall performance and stability
in the most usual scenarios.

- `overlay2` is the preferred storage driver, for all currently supported
Linux distributions, and requires no extra configuration.
- `aufs` is the preferred storage driver for Docker 18.06 and older, when
running on Ubuntu 14.04 on kernel 3.13 (which has no support for `overlay2`.
- `devicemapper` is next, but requires `direct-lvm` for production
environments, because `loopback-lvm`, while zero-configuration, has very
poor performance. `devicemapper` was the recommended storage driver for
CentOS and RHEL, as their kernel version did not support `overlay2`. However,
current versions of CentOS and RHEL now have support for `overlay2`, and
is now the recommended driver.
- The `btrfs` and `zfs` storage drivers are used if they are the backing
filesystem (the filesystem of the host on which Docker is installed).
These filesystems allow for advanced options, such as creating "snapshots",
but require more maintenance and setup. Each of these relies on the backing
filesystem being configured correctly.
- The `vfs` storage driver is intended for testing purposes, and for situations
where no copy-on-write filesystem can be used. Performance of this storage
driver is poor, and not generally recommended for production use.

The selection order is defined in Docker's source code. You can see the order
by looking at
[the source code for Docker CE {{ site.docker_ce_stable_version }}](https://github.com/docker/docker-ce/blob/{{ site.docker_ce_stable_version }}/components/engine/daemon/graphdriver/driver_linux.go#L50)
You can use the branch selector at the top of the file viewer to choose a
different branch, if you run a different version of Docker.
{: id="storage-driver-order" }

- Your choice may be limited by your Docker edition, operating system, and
distribution. For instance, `aufs` is only supported on Ubuntu and Debian, and
may require extra packages to be installed,
while `btrfs` is only supported on SLES, which is only supported with Docker
EE. See
[Support storage drivers per Linux distribution](#supported-storage-drivers-per-linux-distribution).

- Some storage drivers require you to use a specific format for the backing
filesystem. If you have external requirements to use a specific backing
filesystem, this may limit your choices. See
[Supported backing filesystems](#supported-backing-filesystems).

- After you have narrowed down which storage drivers you can choose from, your
choice are determined by the characteristics of your workload and the
level of stability you need. See [Other considerations](#other-considerations)
for help making the final decision.
If multiple storage drivers are supported in your kernel, Docker has prioritized
ahh-docker marked this conversation as resolved.
Show resolved Hide resolved
list of which storage driver to use if no storage driver is explicitly configured,
assuming that the that storage driver meets the prerequisites.

Use the storage driver with the best overall performance and stability in the most
usual scenarios.

Docker supports the following storage drivers:

* `overlay2` is the preferred storage driver, for all currently supported
Linux distributions, and requires no extra configuration.
* `aufs` is the preferred storage driver for Docker 18.06 and older, when
running on Ubuntu 14.04 on kernel 3.13 (which has no support for `overlay2`.
* `devicemapper` is supported, but requires `direct-lvm` for production
environments, because `loopback-lvm`, while zero-configuration, has very
poor performance. `devicemapper` was the recommended storage driver for
CentOS and RHEL, as their kernel version did not support `overlay2`. However,
current versions of CentOS and RHEL now have support for `overlay2`, and
ahh-docker marked this conversation as resolved.
Show resolved Hide resolved
is now the recommended driver.
* The `btrfs` and `zfs` storage drivers are used if they are the backing
filesystem (the filesystem of the host on which Docker is installed).
These filesystems allow for advanced options, such as creating "snapshots",
but require more maintenance and setup. Each of these relies on the backing
filesystem being configured correctly.
* The `vfs` storage driver is intended for testing purposes, and for situations
where no copy-on-write filesystem can be used. Performance of this storage
driver is poor, and not generally recommended for production use.

Docker's source code defines the selection order. You can see the order at
[the source code for Docker CE {{ site.docker_ce_stable_version }}](https://github.com/docker/docker-ce/blob/{{ site.docker_ce_stable_version }}/components/engine/daemon/graphdriver/driver_linux.go#L50)

You can use the branch selector at the top of the file viewer to choose a different branch, if you run a
different version of Docker.
{: id="storage-driver-order" }

Some storage drivers require you to use a specific format for the backing filesystem. If you have external
requirements to use a specific backing filesystem, this may limit your choices. See [Supported backing filesystems](#supported-backing-filesystems).

After you have narrowed down which storage drivers you can choose from, your choice are determined by the
characteristics of your workload and the level of stability you need. See [Other considerations](#other-considerations)
for help making the final decision.

> ***NOTE***: Your choice may be limited by your Docker edition, operating system, and distribution.
> For instance, `aufs` is only supported on Ubuntu and Debian, and may require extra packages
> to be installed, while `btrfs` is only supported on SLES, which is only supported with Docker
> EE. See [Support storage drivers per Linux distribution](#supported-storage-drivers-per-linux-distribution)
> for more information.


## Supported storage drivers per Linux distribution

Expand Down