Sélectionner un pilote de stockage
Idéalement, très peu de données sont écrites dans la couche modifiable d'un conteneur, et vous utilisez les volumes Docker pour écrire des données. Cependant, certaines charges de travail nécessitent de pouvoir écrire dans la couche modifiable du conteneur. C'est là qu'interviennent les pilotes de stockage.
Docker prend en charge plusieurs pilotes de stockage, utilisant une architecture modulaire. Le pilote de stockage contrôle comment les images et conteneurs sont stockés et gérés sur votre hôte Docker. Après avoir lu la vue d'ensemble des pilotes de stockage, la prochaine étape est de choisir le meilleur pilote de stockage pour vos charges de travail. Utilisez le pilote de stockage avec les meilleures performances globales et stabilité dans les scénarios les plus usuels.
NoteCette page traite des pilotes de stockage pour Docker Engine sur Linux. Si vous exécutez le démon Docker avec Windows comme système d'exploitation hôte, le seul pilote de stockage pris en charge est windowsfilter. Pour plus d'informations, voir windowsfilter.
Docker Engine fournit les pilotes de stockage suivants sur Linux :
Pilote | Description |
---|---|
overlay2 |
overlay2 est le pilote de stockage préféré pour toutes les distributions Linux actuellement prises en charge, et ne nécessite aucune configuration supplémentaire. |
fuse-overlayfs |
fuse-overlayfs est préféré uniquement pour exécuter Docker Rootless sur un ancien hôte qui ne fournit pas de support pour overlay2 rootless. Le pilote fuse-overlayfs n'a pas besoin d'être utilisé depuis le noyau Linux 5.11, et overlay2 fonctionne même en mode rootless. Consultez la
documentation du mode rootless pour plus de détails. |
btrfs et zfs |
Les pilotes de stockage btrfs et zfs permettent des options avancées, comme la création de "snapshots", mais nécessitent plus de maintenance et de configuration. Chacun d'eux dépend de la configuration correcte du système de fichiers de support. |
vfs |
Le pilote de stockage vfs est destiné aux tests, et aux situations où aucun système de fichiers copy-on-write ne peut être utilisé. Les performances de ce pilote de stockage sont médiocres, et il n'est généralement pas recommandé pour un usage en production. |
Docker Engine a une liste priorisée de quel pilote de stockage utiliser si aucun pilote de stockage n'est explicitement configuré, en supposant que le pilote de stockage répond aux prérequis, et sélectionne automatiquement un pilote de stockage compatible. Vous pouvez voir l'ordre dans le code source de Docker Engine 28.2.2.
Certains pilotes de stockage nécessitent l'utilisation d'un format spécifique pour le système de fichiers de support. Si vous avez des exigences externes pour utiliser un système de fichiers de support spécifique, cela peut limiter vos choix. Voir Systèmes de fichiers de support pris en charge.
Après avoir réduit les pilotes de stockage parmi lesquels vous pouvez choisir, votre choix est déterminé par les caractéristiques de votre charge de travail et le niveau de stabilité dont vous avez besoin. Voir Autres considérations pour aide dans la prise de décision finale.
Pilotes de stockage pris en charge par distribution Linux
NoteModifier le pilote de stockage en éditant le fichier de configuration du démon n'est pas pris en charge sur Docker Desktop. Seul le pilote
overlay2
par défaut ou le stockage containerd sont pris en charge. Le tableau suivant n'est pas non plus applicable pour Docker Engine en mode rootless. Pour les pilotes disponibles en mode rootless, voir la documentation du mode Rootless.
Votre système d'exploitation et noyau peuvent ne pas prendre en charge tous les pilotes de stockage. Par
exemple, btrfs
n'est pris en charge que si votre système utilise btrfs
comme stockage. En
général, les configurations suivantes fonctionnent sur les versions récentes de la distribution
Linux :
Distribution Linux | Pilotes de stockage recommandés | Pilotes alternatifs |
---|---|---|
Ubuntu | overlay2 |
zfs , vfs |
Debian | overlay2 |
vfs |
CentOS | overlay2 |
zfs , vfs |
Fedora | overlay2 |
zfs , vfs |
SLES 15 | overlay2 |
vfs |
RHEL | overlay2 |
vfs |
En cas de doute, la meilleure configuration globale est d'utiliser une distribution Linux
moderne avec un noyau qui prend en charge le pilote de stockage overlay2
, et d'utiliser
les volumes Docker pour les charges de travail intensives en écriture au lieu de compter sur l'écriture de données
dans la couche modifiable du conteneur.
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.
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 not recommended according to this table, you can run it at your own risk. You can and should still report any issues you run into. However, such issues have a lower priority than issues encountered when using a recommended configuration.
Depending on your Linux distribution, other storage-drivers, such as btrfs
may
be available. These storage drivers can have advantages for specific use-cases,
but may require additional set-up or maintenance, which make them not recommended
for common scenarios. Refer to the documentation for those storage drivers for
details.
Systèmes de fichiers de support pris en charge
En ce qui concerne Docker, le système de fichiers de support est le système de fichiers où
/var/lib/docker/
est situé. Certains pilotes de stockage ne fonctionnent qu'avec des
systèmes de fichiers de support spécifiques.
Pilote de stockage | Systèmes de fichiers de support pris en charge |
---|---|
overlay2 |
xfs avec ftype=1, ext4 |
fuse-overlayfs |
tout système de fichiers |
btrfs |
btrfs |
zfs |
zfs |
vfs |
tout système de fichiers |
Autres considérations
Adéquation à votre charge de travail
Entre autres choses, chaque pilote de stockage a ses propres caractéristiques de performance qui le rendent plus ou moins adapté à différentes charges de travail. Considérez les généralisations suivantes :
overlay2
fonctionne au niveau des fichiers plutôt qu'au niveau des blocs. Cela utilise la mémoire plus efficacement, mais la couche modifiable du conteneur peut devenir assez volumineuse dans les charges de travail intensives en écriture.- Les pilotes de stockage au niveau des blocs comme
btrfs
etzfs
performent mieux pour les charges de travail intensives en écriture (bien que pas aussi bien que les volumes Docker). btrfs
etzfs
nécessitent beaucoup de mémoire.zfs
est un bon choix pour les charges de travail haute densité comme PaaS.
Plus d'informations sur les performances, l'adéquation et les meilleures pratiques sont disponibles dans la documentation de chaque pilote de stockage.
Systèmes de stockage partagé et le pilote de stockage
Si vous utilisez SAN, NAS, RAID matériel, ou d'autres systèmes de stockage partagé, ces systèmes peuvent fournir haute disponibilité, performances accrues, provisionnement mince, déduplication, et compression. Dans de nombreux cas, Docker peut fonctionner au-dessus de ces systèmes de stockage, mais Docker ne s'intègre pas étroitement avec eux.
Chaque pilote de stockage Docker est basé sur un système de fichiers Linux ou un gestionnaire de volumes. Assurez-vous de suivre les meilleures pratiques existantes pour faire fonctionner votre pilote de stockage (système de fichiers ou gestionnaire de volumes) au-dessus de votre système de stockage partagé. Par exemple, si vous utilisez le pilote de stockage ZFS au-dessus d'un système de stockage partagé, assurez-vous de suivre les meilleures pratiques pour faire fonctionner les systèmes de fichiers ZFS au-dessus de ce système de stockage partagé spécifique.
Stabilité
Pour certains utilisateurs, la stabilité est plus importante que les performances. Bien que Docker
considère tous les pilotes de stockage mentionnés ici comme stables, certains sont plus récents
et sont encore en développement actif. En général, overlay2
fournit la
plus haute stabilité.
Tester avec vos propres charges de travail
Vous pouvez tester les performances de Docker lors de l'exécution de vos propres charges de travail sur différents pilotes de stockage. Assurez-vous d'utiliser du matériel et des charges de travail équivalents pour correspondre aux conditions de production, afin de pouvoir voir quel pilote de stockage offre les meilleures performances globales.
Vérifier votre pilote de stockage actuel
La documentation détaillée pour chaque pilote de stockage individuel détaille toutes les étapes de configuration pour utiliser un pilote de stockage donné.
Pour voir quel pilote de stockage Docker utilise actuellement, utilisez docker info
et regardez
la ligne Storage Driver
:
$ docker info
Containers: 0
Images: 0
Storage Driver: overlay2
Backing Filesystem: xfs
<...>
Pour changer le pilote de stockage, voir les instructions spécifiques pour le nouveau pilote de stockage. Certains pilotes nécessitent une configuration supplémentaire, incluant la configuration des disques physiques ou logiques sur l'hôte Docker.
ImportantQuand vous changez le pilote de stockage, toutes les images et conteneurs existants deviennent inaccessibles. C'est parce que leurs couches ne peuvent pas être utilisées par le nouveau pilote de stockage. Si vous annulez vos changements, vous pouvez accéder à nouveau aux anciennes images et conteneurs, mais tous ceux que vous avez tirés ou créés en utilisant le nouveau pilote sont alors inaccessibles.