| `btrfs` and `zfs` | The `btrfs` and `zfs` storage drivers 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. |
| `vfs` | 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 is not generally recommended for production use. |
<!-- markdownlint-disable reference-links-images -->
The Docker Engine has a prioritized list of which storage driver to use if no
storage driver is explicitly configured, assuming that the storage driver meets
the prerequisites, and automatically selects a compatible storage driver. You
can see the order in the [source code for Docker Engine {{% param "docker_ce_version" %}}](https://github.com/moby/moby/blob/v{{% param "docker_ce_version" %}}/daemon/graphdriver/driver_linux.go#L52-L53).
{ #storage-driver-order }
<!-- markdownlint-enable reference-links-images -->
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
is determined by the characteristics of your workload and the level of stability
you need. See [Other considerations](#other-considerations) for help in making
the final decision.
## Supported storage drivers per Linux distribution
> [!NOTE]
>
> Modifying the storage driver by editing the daemon configuration file isn't
> supported on Docker Desktop. Only the default `overlay2` driver or the
> [containerd storage](/manuals/desktop/features/containerd.md) are supported. The
> following table is also not applicable for the Docker Engine in rootless
> mode. For the drivers available in rootless mode, see the [Rootless mode
> documentation](/manuals/engine/security/rootless.md).
Your operating system and kernel may not support every storage driver. For
example, `btrfs` is only supported if your system uses `btrfs` as storage. In
general, the following configurations work on recent versions of the Linux
distribution:
| Linux distribution | Recommended storage drivers | Alternative drivers |
| :------------------- | :--------------------------- | :------------------- |
| Ubuntu | `overlay2` | `zfs`, `vfs` |
| Debian | `overlay2` | `vfs` |
| CentOS | `overlay2` | `zfs`, `vfs` |
| Fedora | `overlay2` | `zfs`, `vfs` |
| SLES 15 | `overlay2` | `vfs` |
| RHEL | `overlay2` | `vfs` |
When in doubt, the best all-around configuration is to use a modern Linux
distribution with a kernel that supports the `overlay2` storage driver, and to
use Docker volumes for write-heavy workloads instead of relying on writing data
to the container's writable layer.
The `vfs` storage driver is usually not the best choice, and primarily intended
for debugging purposes in situations where no other storage-driver is supported.
Before using the `vfs` storage driver, be sure to read about
[its performance and storage characteristics and limitations](vfs-driver.md).
The recommendations in the table above are known to work for a large number of
users. If you use a recommended configuration and find a reproducible issue,
it's likely to be fixed very quickly. If the driver that you want to use is