Création d'images Docker
Comprendre les images Docker
Les images Docker sont des modèles en lecture seule utilisés pour créer des conteneurs. Elles constituent le plan de base des applications conteneurisées, contenant tous les composants nécessaires à l'exécution des environnements logiciels.
Méthodes de création d'images
Docker propose plusieurs approches pour créer des images :
Méthode |
Description |
Utilisation |
Dockerfile |
Création d'image scriptée |
Builds reproductibles |
Docker Commit |
Génération manuelle d'image |
Prototypage rapide |
Docker Build |
Construction automatique d'image |
Déploiement de production |
Processus de création de Dockerfile
graph TD
A[Dockerfile] --> B[Image de base]
B --> C[Installer les dépendances]
C --> D[Copier le code de l'application]
D --> E[Configurer le point d'entrée]
E --> F[Construire l'image]
Exemple de Dockerfile pour une application Python
## Utiliser l'image runtime Python officielle comme image de base
FROM python:3.9-slim
## Définir le répertoire de travail
WORKDIR /app
## Copier le fichier requirements
COPY requirements.txt .
## Installer les dépendances
RUN pip install --no-cache-dir -r requirements.txt
## Copier le code de l'application
COPY . .
## Spécifier la commande pour exécuter l'application
CMD ["python", "app.py"]
Commandes de construction d'images Docker
## Construire l'image à partir de Dockerfile
docker build -t myapp:v1 .
## Lister les images locales
docker images
## Taguer une image existante
docker tag myapp:v1 myregistry/myapp:latest
## Envoyer l'image vers un registre
docker push myregistry/myapp:latest
Création manuelle d'image via Commit
## Démarrer un conteneur et le modifier
docker run -it ubuntu:latest /bin/bash
## [À l'intérieur du conteneur] apt-get update
## [À l'intérieur du conteneur] apt-get install python3
## Enregistrer les modifications du conteneur dans une nouvelle image
docker commit [id_du_conteneur] myubuntu:python
Mécanisme de couche d'image
Les images Docker sont composées de plusieurs couches en lecture seule, permettant un stockage efficace et un démarrage rapide des conteneurs. Chaque instruction dans un Dockerfile crée une nouvelle couche, optimisant l'utilisation des ressources et la vitesse de transfert.