Docker - Stockage

Pilotes de stockage

Docker dispose de plusieurs pilotes de stockage qui permettent de travailler avec les périphériques de stockage sous-jacents. Le tableau suivant présente les différents pilotes de stockage ainsi que la technologie utilisée pour les pilotes de stockage.

La technologie Pilote de stockage
OverlayFS superposition ou superposition2
AUFS aufs
Btrfs brtfs
Gestionnaire de périphériques Gestionnaire de périphériques
VFS vfs
ZFS zfs

Voyons maintenant quelques-unes des instances dans lesquelles vous utiliseriez les différents pilotes de stockage -

AUFS

  • C'est un pilote stable; peut être utilisé pour des applications prêtes pour la production.

  • Il a une bonne utilisation de la mémoire et est bon pour assurer une expérience Docker fluide pour les conteneurs.

  • Il existe une activité d'écriture élevée associée à ce pilote qui doit être prise en compte.

  • C'est bon pour les systèmes qui sont de type Platform en tant que service.

Devicemapper

  • C'est un pilote stable; garantit une expérience Docker fluide.

  • Ce pilote est idéal pour tester les applications en laboratoire.

  • Ce pilote est conforme aux principales fonctionnalités du noyau Linux.

Btrfs

  • Ce pilote est conforme aux principales fonctionnalités du noyau Linux.

  • Il existe une activité d'écriture élevée associée à ce pilote qui doit être prise en compte.

  • Ce pilote convient aux instances où vous gérez plusieurs pools de build.

Ovelay

  • Il s'agit d'un pilote stable et conforme aux principales fonctionnalités du noyau Linux.

  • Il a une bonne utilisation de la mémoire.

  • Ce pilote est idéal pour tester les applications en laboratoire.

ZFS

  • Il s'agit d'un pilote stable et idéal pour tester des applications en laboratoire.

  • C'est bon pour les systèmes de type Platform-as-a-Service.

Pour voir le pilote de stockage utilisé, lancez le docker info commander.

Syntaxe

docker info

Options

Aucun

Valeur de retour

La commande fournira toutes les informations relatives sur le composant Docker installé sur l'hôte Docker.

Exemple

sudo docker info

Production

La sortie suivante montre que le pilote principal utilisé est le aufs pilote et que le répertoire racine est stocké dans /var/lib/docker/aufs.

Volumes de données

Dans Docker, vous disposez d'un volume distinct qui peut être partagé entre les conteneurs. Ceux-ci sont connus commedata volumes. Certaines des caractéristiques du volume de données sont:

  • Ils sont initialisés lors de la création du conteneur.
  • Ils peuvent être partagés et réutilisés entre de nombreux conteneurs.
  • Toute modification du volume lui-même peut être effectuée directement.
  • Ils existent même après la suppression du conteneur.

Regardons notre conteneur Jenkins. Faisons undocker inspectpour voir les détails de cette image. Nous pouvons émettre la commande suivante pour écrire la sortie dudocker inspect dans un fichier texte, puis affichez le fichier en conséquence.

sudo docker inspect Jenkins > tmp.txt

Lorsque vous affichez le fichier texte à l'aide de more command, vous verrez une entrée comme JENKINS_HOME=/var/Jenkins_home.

Il s'agit du mappage effectué dans le conteneur via l'image Jenkins.

Supposons maintenant que vous vouliez mapper le volume du conteneur sur un volume local, vous devez alors spécifier l'option –v lors du lancement du conteneur. Un exemple est montré ci-dessous -

sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

L'option –v est utilisée pour mapper le volume dans le conteneur qui est /var/jenkins_home à un emplacement sur notre hôte Docker qui est /home/demo.

Maintenant, si vous allez au /home/demo emplacement sur votre hôte Docker après le lancement de votre conteneur, vous verrez tous les fichiers de conteneur qui y sont présents.

Modification du pilote de stockage d'un conteneur

Si vous souhaitez modifier le pilote de stockage utilisé pour un conteneur, vous pouvez le faire lors du lancement du conteneur. Cela peut être fait en utilisant le–volume-driver paramètre lors de l'utilisation du docker runcommander. Un exemple est donné ci-dessous -

sudo docker run –d --volume-driver=flocker 
   –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

le –volume-driver L'option est utilisée pour spécifier un autre pilote de stockage pour le conteneur.

Pour confirmer que le pilote a été modifié, utilisons d'abord le docker pscommande pour voir les conteneurs en cours d'exécution et obtenir l'ID du conteneur. Alors, lancez d'abord la commande suivante -

sudo docker ps

Puis émettez un docker inspect contre le conteneur et placez la sortie dans un fichier texte à l'aide de la commande.

sudo docker inspect 9bffb1bfebee > temp.txt

Si vous parcourez le fichier texte et allez à la ligne qui dit VolumeDriver, vous verrez que le nom du pilote a été changé.

Créer un volume

Un volume peut être créé au préalable à l'aide du dockercommander. Apprenons-en plus sur cette commande.

Syntaxe

docker volume create –-name=volumename –-opt options

Options

  • name - C'est le nom du volume qui doit être créé.

  • opt - Ce sont des options que vous pouvez fournir lors de la création du volume.

Valeur de retour

La commande affichera le nom du volume créé.

Exemple

sudo docker volume create –-name = demo –opt o = size = 100m

Dans la commande ci-dessus, nous créons un volume de taille 100 Mo et avec un nom de démo.

Production

La sortie de la commande ci-dessus est affichée ci-dessous -

Liste de tous les volumes

Vous pouvez également lister tous les docker volumes sur un docker host. Plus de détails sur cette commande sont donnés ci-dessous -

Syntaxe

docker volume ls

Options

Aucun

Valeur de retour

La commande affichera tous les volumes sur le docker host.

Exemple

sudo docker volume ls

Production

La sortie de la commande ci-dessus est affichée ci-dessous -