1.1 Bases des Docker Images
Docker Images (images Docker) — ce sont des templates pour les conteneurs Docker. Ils contiennent tout ce qu'il faut pour exécuter des applications : code, bibliothèques, dépendances, outils et fichiers de configuration. Comprendre ce que sont les Docker Images et comment elles sont structurées est important pour utiliser Docker efficacement.
Docker Image — c’est un template immuable
utilisé pour créer des conteneurs. Il contient tous les composants nécessaires pour exécuter une application dans un environnement isolé. Quand tu lances un conteneur, Docker crée une instance de l’image et la démarre.
Caractéristiques principales des Docker Images :
- Immutabilité : les Docker Images sont immuables. Toute modification dans un conteneur n'affecte pas l'image d'origine. Pour changer le contenu d'une image, tu dois en créer une nouvelle.
- Structure en couches : les Docker Images sont constituées de plusieurs couches. Chaque couche représente un changement par rapport à la précédente. Cela permet d’utiliser efficacement l’espace en réutilisant les couches.
- Identification : chaque image possède un identifiant unique (SHA256 hash), et peut également avoir un ou plusieurs tags, ce qui facilite la gestion des versions d'image.
Structure des Docker Images :
Les Docker Images ont une structure en couches, où chaque couche est un système de fichiers. Ces couches sont stockées dans le cache Docker et peuvent être réutilisées par d'autres images. Cette structure en couches rend les Docker Images légères et efficaces. Par exemple, la première couche peut être le système d’exploitation, la deuxième — Python, et la troisième — ton application.
Principaux composants de la structure des Docker Images :
- Couche de base (Base Layer) : la couche initiale de l'image, souvent utilisée comme base pour créer d'autres images. Cela peut être une version minimale d’un système d’exploitation comme Ubuntu ou Alpine Linux, par exemple.
- Couches intermédiaires (Intermediate Layers) : ces couches sont créées à partir des commandes exécutées dans un Dockerfile (ex. installation de paquets, copie de fichiers, etc.). Chaque couche ajoute des modifications à la précédente.
- Couche finale (Final Layer) : la dernière couche, créée à partir des instructions CMD, ENTRYPOINT ou des modifications dans le conteneur, est appelée "couche conteneurisée". Cette couche est temporaire et n'existe que pendant l'exécution du conteneur.
1.2 Comment fonctionnent les couches des Docker Images
Chaque couche d'une image Docker représente un ensemble de modifications par rapport à la couche précédente. Quand Docker crée une image, il exécute chaque instruction du Dockerfile et ajoute une nouvelle couche pour chaque changement.
Exemple de création de couches :
- Image de base : on commence avec une image de base, par exemple,
ubuntu:20.04
. Ce sera la première couche. - Installation de paquets : la commande
RUN apt-get update && apt-get install -y python3
créera une nouvelle couche avec Python installé. - Copie de fichiers : la commande
COPY . /app
ajoutera les fichiers de l'application dans une nouvelle couche. - Définir un répertoire de travail : la commande
WORKDIR /app
créera une couche qui définira le répertoire de travail pour les commandes suivantes.
Les avantages d'utiliser des couches :
- Réutilisation : les couches peuvent être réutilisées par d'autres images. Par exemple, si deux images utilisent la même couche de base, Docker la téléchargera une seule fois, économisant de l'espace et du temps.
- Cache : Docker met en cache les couches, ce qui accélère le processus de construction des images. Si une couche n'a pas changé, Docker l'utilise depuis le cache au lieu de la reconstruire.
- Modularité : la structure en couches permet de développer des images de manière modulaire. Vous pouvez mettre à jour ou modifier des couches individuelles sans affecter toute l'image.
Identification et tags des Docker Images :
Chaque Docker Image est identifiée à l'aide d'un hash unique (SHA256), qui est généré sur la base du contenu de l'image et de toutes ses couches. Pour une gestion et une versionnage pratiques, les Docker Images peuvent également avoir des tags.
Exemple d'identification d'image :
La commande suivante affichera la liste de toutes les images sur votre système, y compris leurs dépôts, tags, identifiants et tailles :
docker images
1.3 Travailler avec Docker Images
Docker propose plein de commandes pour bosser avec les images. Voilà les principales :
- Créer une image :
docker build
- Lancer un container depuis une image :
docker run
- Liste des images :
docker images
- Supprimer une image :
docker rmi
- Rechercher des images sur Docker Hub :
docker search
- Télécharger une image depuis Docker Hub :
docker pull
- Pusher une image sur Docker Hub :
docker push
Exemple de création et utilisation de Docker Image :
1. Création du Dockerfile :
# On utilise l'image de base Ubuntu
FROM ubuntu:20.04
# On installe Python
RUN apt-get update && apt-get install -y python3
# On copie les fichiers de l'application dans le container
COPY . /app
# On définit le répertoire de travail
WORKDIR /app
# On précise la commande pour lancer l'application
CMD ["python3", "app.py"]
2. Construire l'image :
La commande suivante va créer une image nommée my_python_app
, en utilisant le Dockerfile du répertoire actuel :
docker build -t my_python_app .
3. Lancer un container depuis l'image :
Utilisez cette commande pour lancer un container depuis l'image créée my_python_app
en mode détaché :
docker run -d my_python_app
GO TO FULL VERSION