web-dev-qa-db-fra.com

Pourquoi Docker a-t-il besoin d'un système de fichiers Union

Que fait exactement Docker avec le système de fichiers Union (comme AUFS) pour créer les conteneurs? Si Docker devait utiliser un système de fichiers standard au lieu d'un système de fichiers union, quels en seraient les inconvénients?

Je recherche des détails techniques/internes spécifiques et non une réponse de haut niveau.

28
Manohar

Il est utilisé pour:

  • évitez de dupliquer un ensemble complet de fichiers chaque fois que vous exécutez une image en tant que nouveau conteneur
  • isoler les modifications apportées à un système de fichiers de conteneur dans sa propre couche, ce qui permet de redémarrer ce même conteneur à partir d'un contenu connu (car la couche contenant les modifications aura été supprimée lorsque le conteneur sera supprimé)

Cela nionFS :

implémente un nion mount pour les autres systèmes de fichiers. Il permet aux fichiers et répertoires de systèmes de fichiers distincts, appelés branches, d'être superposés de manière transparente, formant un système de fichiers cohérent unique.
Le contenu des répertoires qui ont le même chemin dans les branches fusionnées sera vu ensemble dans un seul répertoire fusionné, dans le nouveau système de fichiers virtuel.

Cela permet à un système de fichiers d'apparaître accessible en écriture, mais sans réellement autoriser les écritures à modifier le système de fichiers, également connu sous le nom copie sur écriture

Si vous n'aviez pas UnionFS, une image de 200 Mo exécutée 5 fois car 5 conteneurs séparés signifierait 1 Go d'espace disque.

Voir plus sur " Comment fonctionne une image Docker? ".
Pour plus de détails techniques, voir:

30
VonC