Où sont stockés les images et les conteneurs Docker sur l'hôte ?  – CloudSavvy IT
Agence web » Actualités du digital » Où sont stockés les images et les conteneurs Docker sur l’hôte ? – CloudSavvy IT

Où sont stockés les images et les conteneurs Docker sur l’hôte ? – CloudSavvy IT

Docker utilise deux types de formats pour représenter les processus en cours d’exécution : les images et les conteneurs, et les deux stockent des données sur le lecteur de votre ordinateur. Nous parlerons des commandes fournies par Docker pour gérer les données et de la façon dont vous pouvez les utiliser pour accéder aux fichiers image et conteneur.

La différence entre les images et les conteneurs

Les images sont ce que vous créez lorsque vous exécutez docker build; ils sont stockés dans un registre de conteneurs comme le Docker Hub et contiennent tous les fichiers et le code pour exécuter une application. Vous pouvez les considérer comme des fichiers ISO pour un système d’exploitation de machine virtuelle.

Les conteneurs sont créés à partir d’images et sont comme la véritable machine virtuelle qui exécute l’application. Vous pouvez avoir plusieurs conteneurs exécutés en parallèle sur la même image. Chaque conteneur aura son propre système de fichiers, éventuellement créé avec des « montages de volume » qui lient les données de l’hôte au conteneur.

Travailler avec le stockage d’images Docker

Les images stockent l’intégralité du contenu de l’image sur votre lecteur. Chaque fois que vous extrayez une image d’Internet, elle est téléchargée et stockée, généralement pour toujours. Les images peuvent être très volumineuses, ce qui peut s’accumuler avec le temps, en particulier pour les ordinateurs portables avec un stockage limité.

Si vous souhaitez accéder directement aux données d’image, elles sont généralement stockées aux emplacements suivants :

  • Linux : /var/lib/docker/
  • Les fenêtres: C:ProgramDataDockerDesktop
  • macOS : ~/Library/Containers/com.docker.docker/Data/vms/0/

Cependant, toucher ces données est probablement un mauvaise idée. Le stockage de Docker est compliqué et varie en fait énormément en fonction du pilote de stockage qu’il utilise. Linux est désormais par défaut overlay2 sur la plupart des distributions, ce qui n’est même pas accessible pour la plupart des utilisateurs finaux. Jouer avec cela peut entraîner une perte de données.

Au lieu de cela, Docker fournit des commandes gérées pour gérer les images. Vous pouvez afficher toutes les versions des images téléchargées avec une simple commande :

docker image ls

Heureusement, ce n’est pas aussi grave qu’il n’y paraît, car les images Docker stockent les versions de manière incrémentielle. Cela signifie que chaque fois que vous téléchargez une nouvelle version, elle ne remplace que les pièces qui ont été modifiées. Si vous utilisez fréquemment la même image encore et encore, vous n’accumulerez probablement pas trop de frais de stockage.

Cependant, si vous utilisez beaucoup d’images différentes, vous pouvez avoir de nombreuses images enregistrées qui ne sont même plus utilisées. Pour les nettoyer, Docker fournit une commande intégrée pour exécuter le ramasse-miettes. Cela élaguera toutes les images qui n’ont pas de références, c’est-à-dire non étiquetées ou non référencées par aucun conteneur.

docker image prune

Pour élaguer toutes les anciennes images non utilisées par les conteneurs existants, exécutez-le avec le -a drapeau:

docker image prune -a

Cela couvre le cas d’utilisation principal, mais il existe quelques commandes plus utiles :

  • inspect: affiche des informations sur une version de conteneur.
  • save & load: enregistre et charge les images dans un tar archiver.
  • rm: supprime directement une image.
  • pull/push: mises à jour à partir d’un registre distant.
  • history: fournit un journal des modifications.

Travailler avec Docker Container Storage

Vous pouvez afficher toutes les informations sur un conteneur avec docker inspect, qui affiche les pilotes et les données du système de fichiers, ainsi que tous les montages et volumes existants.

docker inspect containerID

Les conteneurs stockent les données de deux manières. Le premier est le système de fichiers de base, qui est copié à partir de l’image et est unique à chaque conteneur. Docker utilise un «répertoire inférieur» et un «répertoire supérieur», qui sont des couches distinctes qui sont fusionnées en un seul système de fichiers hybride. Le répertoire inférieur stocke les données de l’image de base et le répertoire supérieur stocke tout ce qui a été modifié lors de l’exécution, tels que les fichiers journaux. Dans les deux cas, leur stockage dépend du pilote de système de fichiers que Docker est configuré pour utiliser.

Ensuite, il y a montures, qui lient les répertoires de l’hôte au conteneur, généralement gérés automatiquement avec une fonctionnalité Docker appelée tomes. Ceux-ci sont stockés normalement et sont accessibles aux utilisateurs finaux. Si vous effectuez un travail qui vous oblige à modifier des données sur des conteneurs en cours d’exécution, vous devriez probablement modifier un volume ou un montage de liaison.

Accéder aux volumes

Les montages de liaison sont accessibles directement et constituent un excellent choix si vous souhaitez stocker une configuration utilisée pour de nombreux conteneurs ou stocker des données accessibles qui persistent lors des redémarrages de conteneur.

Si vous souhaitez modifier des données stockées dans des volumes, vous pouvez également le faire. Ils sont stockés dans un format standard accessible depuis Linux :

/var/lib/docker/volumes/volumeID/_data

Vous pouvez obtenir l’ID de volume et les informations avec docker volume inspect.

Tout comme les images, les volumes peuvent également devenir périmés. Vous pouvez les supprimer facilement, mais les sauvegarder et les transférer est un processus plus délicat.

docker volume prune

docker volume rm volumeID

Modification du système de fichiers d’un conteneur Docker

Si vous souhaitez modifier le système de fichiers du conteneur, un peu comme les images, il s’agit d’un mauvaise idée. Dans la plupart des cas, vous devez créer une nouvelle version du conteneur avec les modifications mises à jour et déployer une mise à jour.

Cependant, si vous souhaitez apporter des modifications rapides sans arrêter le conteneur, le meilleur moyen consiste simplement à ouvrir un shell bash à l’intérieur du conteneur et à le modifier via Docker. C’est très simple : courir docker exec sur le conteneur, et passez « bash » comme commande :

docker exec -it container bash

À partir de là, vous êtes libre d’utiliser les commandes Linux normales. Si vous souhaitez le faire à distance, vous pouvez installer un serveur SSH dans votre conteneur et lier le port 22 à un autre port sur l’hôte.

Comment SSH dans un conteneur Docker

★★★★★