
Table des matières
Les images Docker sont immuables. Une fois construits, ils ne changent pas. Cela garantit la cohérence, la prévisibilité et la stabilité. Chaque conteneur créé à partir de la même image se comporte de manière identique et la gestion des versions devient sûre et simple. Mais que se passe-t-il si vous avez besoin de modifier quelque chose dans un conteneur en cours d’exécution, comme installer un package ou mettre à jour une configuration ? C’est là qu’intervient Docker Commit. Il vous permet de capturer les modifications dans un conteneur en cours d’exécution et de créer une nouvelle image sans toucher à l’original. C’est idéal pour tester des correctifs, itérer rapidement et déployer des images personnalisées sans reconstruire à partir de zéro.
Pourquoi les images Docker ne changent pas
Les images Docker sont constituées de plusieurs couches en lecture seule. Lorsque vous exécutez un conteneur, Docker ajoute une fine couche inscriptible appelée couche conteneur. Toutes les modifications que vous apportez se produisent uniquement dans cette couche supérieure. Une fois le conteneur supprimé, toutes les modifications apportées à ce calque disparaissent, laissant l’image d’origine inchangée.
Cette conception garantit plusieurs avantages :
- Chaque conteneur de la même image se comporte de la même manière, garantissant ainsi la cohérence.
- Les modifications apportées à un conteneur n’affectent pas les autres, ce qui assure la prévisibilité.
- Vous pouvez baliser en toute sécurité des versions d’images spécifiques sans risque.
Cette conception offre une excellente stabilité, mais vous limite lorsque vous souhaitez apporter des modifications rapides à un conteneur en cours d’exécution. C’est là docker commit aide.
Crée une nouvelle image à partir d’un conteneur en cours d’exécution
Lorsque vous exécutez le docker commit commande, Docker capture l’état actuel d’un conteneur en cours d’exécution et crée une nouvelle image à partir de celui-ci. Il prend un instantané du système de fichiers du conteneur, enregistrant toutes les modifications que vous avez apportées, comme les packages installés, les configurations mises à jour ou les fichiers modifiés, en tant que nouvelle couche d’image. De cette façon, l’image originale reste intacte, vous permettant d’expérimenter et d’itérer rapidement.
Cela le rend idéal pour enregistrer une configuration de base personnalisée en vue d’une réutilisation future, appliquer de petits correctifs ou modifications de configuration pendant les tests, ou partager des images mises à jour avec votre équipe sans avoir à reconstruire un fichier Docker à partir de zéro.
Vous pouvez utiliser le docker commit commande avec la syntaxe suivante pour créer une nouvelle image à partir d’un conteneur en cours d’exécution :
docker commit (OPTIONS) CONTAINER_ID NEW_IMAGE_NAME(:TAG)Ici, CONTAINER_ID est l’ID ou le nom du conteneur que vous souhaitez capturer, NEW_IMAGE_NAME est le nom que vous voulez pour la nouvelle image, et TAG est facultatif, la valeur par défaut étant la plus récente.
Note: docker commit est un ancien alias pour docker container commit; les deux sont identiques.
Le docker commit La commande fournit plusieurs options qui vous permettent d’ajouter des métadonnées, d’appliquer des modifications de configuration et de contrôler le comportement du processus de validation. Le tableau ci-dessous résume toutes les options prises en charge :
| Option | Forme longue | Description | Exemple |
|---|---|---|---|
| -un | -auteur | Ajoute le nom de l’auteur aux nouvelles métadonnées de l’image. | docker commit -a "Anees" my-container my-image |
| -c | -changement | Applique les instructions Dockerfile telles que ENV, LABEL ou CMD à la nouvelle image. | docker commit -c "ENV APP_ENV=prod" my-container my-image |
| -m | -message | Ajoute un court message décrivant les modifications apportées à l’image. | docker commit -m "Installed curl" my-container my-image |
| -p | -pause | Met le conteneur en pause pendant la validation pour garantir la cohérence (par défaut : true). | docker commit --pause=false my-container my-image |
Voir Comment fonctionne Docker Commit
Supposons que vous souhaitiez installer curl dans un conteneur Alpine sans reconstruire votre Dockerfile. Pour ce faire, exécutez un conteneur à partir de l’image de base :
docker run -it alpine:latest /bin/shUne fois dans le conteneur, effectuez les modifications nécessaires :
apk update && apk add curl
Quittez maintenant le conteneur :
exitAprès cela, validez le conteneur en tant que nouvelle image :
docker commit <container_id> alpine-with-curl:1.0
Vérifiez votre nouvelle image :
docker imagesVous disposez désormais d’une nouvelle image prête à être exécutée n’importe où, avec curl préinstallé.

Exécutez votre nouvelle image pour tester les modifications enregistrées
Après avoir créé votre nouvelle image, vous pouvez exécuter un conteneur à partir de celle-ci pour vérifier que vos modifications sont enregistrées.
docker run -it alpine-with-curl:1.0 /bin/shCette commande ouvre un shell interactif à l’intérieur d’un conteneur basé sur le alpine-with-curl:1.0 image. Une fois à l’intérieur, vous pouvez vérifier que vos modifications sont intactes.
curl --versionCela démontre que les changements sont conservés dans la nouvelle image.

docker commit vs Dockerfile : quand utiliser lequel
Dockerfile et docker commit vous permettent de créer des images Docker, mais ils fonctionnent de manières très différentes et conviennent à différentes situations.
Un Dockerfile est le meilleur choix lorsque vous avez besoin de versions fiables et reproductibles, en particulier pour les pipelines CI/CD et les environnements de production. Toutes les modifications sont clairement définies dans le code, ce qui facilite leur suivi, leur révision et leur contrôle de version au fil du temps. Cette approche garantit que toute personne créant ultérieurement l’image obtiendra le même résultat, ce qui est essentiel pour la maintenance à long terme et la collaboration en équipe.
D’autre part, docker commit fonctionne bien pour les solutions rapides, les tests ou les petits ajustements que vous souhaitez essayer sans réécrire ou reconstruire un fichier Docker entier. C’est utile lorsque vous expérimentez, déboguez ou validez une modification à la volée. Cependant, comme les modifications ne sont pas documentées dans un fichier, cette méthode est mieux adaptée à une utilisation à court terme qu’à la production.
En un mot, vous pouvez utiliser docker commit principalement pour l’expérimentation ou des correctifs temporaires. Pour les images prêtes pour la production, préférez toujours un Dockerfile. Pour tirer le meilleur parti de Docker, il vaut la peine d’explorer d’autres commandes clés qui facilitent l’utilisation des conteneurs, des images et des flux de travail.






