Valider les modifications d'un conteneur avec les instructions CMD et EXPOSE
Dans cette dernière étape, nous allons apprendre à valider les modifications d'un conteneur tout en définissant la commande par défaut (CMD
) et les ports exposés (EXPOSE
) pour la nouvelle image.
L'instruction CMD
définit la commande par défaut qui sera exécutée lorsqu'un conteneur est démarré à partir de l'image sans spécifier de commande. L'instruction EXPOSE
informe Docker que le conteneur écoute sur les ports réseau spécifiés lors de son exécution.
Nous allons à nouveau valider le conteneur my-ubuntu
, cette fois-ci en définissant une commande par défaut pour afficher le contenu de /hello.txt
et en exposant le port 80.
Tout d'abord, assurez-vous que le conteneur my-ubuntu
est arrêté.
docker stop my-ubuntu
Maintenant, validez le conteneur avec les instructions CMD
et EXPOSE
. Notez que l'instruction CMD
est fournie sous forme de tableau JSON de chaînes de caractères.
docker commit -c 'CMD ["cat", "/hello.txt"]' -c 'EXPOSE 80' my-ubuntu my-ubuntu-final
Vous devriez voir l'ID de la nouvelle image créée en sortie.
Vérifions les configurations CMD
et EXPOSE
de la nouvelle image my-ubuntu-final
en utilisant docker inspect
.
docker inspect --format '{{.Config.Cmd}}' my-ubuntu-final
Cela devrait afficher [cat /hello.txt]
, confirmant que la commande par défaut est bien définie.
Vérifions maintenant les ports exposés.
docker inspect --format '{{.Config.ExposedPorts}}' my-ubuntu-final
Vous devriez voir une sortie similaire à map[80/tcp:{}]
, indiquant que le port 80 est exposé.
Enfin, lançons un conteneur à partir de cette nouvelle image sans spécifier de commande pour vérifier si le CMD
par défaut fonctionne.
docker run --rm my-ubuntu-final
Le flag --rm
supprime automatiquement le conteneur lorsqu'il se termine. Comme la commande par défaut est cat /hello.txt
, le conteneur devrait s'exécuter, afficher "Hello from inside the container!", puis se terminer.
Vous devriez voir "Hello from inside the container!" s'afficher dans votre terminal.
Cela démontre comment vous pouvez valider les modifications d'un conteneur et définir le comportement par défaut ainsi que la configuration réseau de l'image résultante.