Démarrer et arrêter un conteneur dans Docker
Nous allons continuer à utiliser un conteneur Ubuntu. Mais cette fois-ci, notre objectif n'est pas de le supprimer automatiquement lorsqu'on le quitte. Pour atteindre ce but, nous servirons de la même commande que précédemment en omettant l'option --rm
.
Nettoyer notre liste de conteneurs
Avant de commencer, faisons un peu de ménage 🧹 et supprimons les conteneurs installés. Normalement si vous m'avez scrupuleusement imité, il ne devrait pas y avoir de conteneurs. Mais vous avez peut-être (et c'est une bonne chose) fait des tests en manipulant les commandes.
Si vous avez oublié la méthode pour supprimer, reportez-vous à la leçon supprimer un conteneur.
Créer le conteneur
Maintenant, si l'on examine la liste des conteneurs, on devrait normalement tomber sur une liste vide.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Nous allons créer le conteneur Ubuntu, toujours avec la version 18.04.
docker run -it ubuntu:18.04
On a créé le conteneur et on s'y trouve à l'intérieur.
À présent on va le quitter.
exit
On va confirmer que le conteneur existe toujours.
docker ps -a
C'est bon, il apparaît dans la liste.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04d3c76cdc0d ubuntu:18.04 "bash" 12 minutes ago Exited (0) 9 seconds ago upbeat_faraday
Il existe, mais il est arrêté. On peut d'ailleurs le démontrer via la commande docker ps
qui liste les conteneurs en cours d'exécution.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Cette fois-ci le tableau est vide, car le conteneur est arrêté.
Mais comment le redémarrer ?
Redémarrer un conteneur
Pour démarrer un conteneur qui a déjà été créé, utilisez la procédure suivante.
Vérifiez la liste des conteneurs.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04d3c76cdc0d ubuntu:18.04 "bash" 23 minutes ago Up About a minute upbeat_faraday
Notez l'ID et tapez la commande suivante, en adaptant avec l'ID de votre conteneur.
docker start 04d3c76cdc0d
Et voilà ! Il est redémarré.
Vérifions.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04d3c76cdc0d ubuntu:18.04 "bash" 26 minutes ago Up 4 minutes upbeat_faraday
Nous savons que c'est le cas pour deux raisons.
- La commande
docker ps
(donc sans l'option -a) produit un résultat - Dans la cinquième colonne, il y a l'expression
up
.
Tout ceci est excellent, mais il y a comme un goût d'inachevé. En effet, notre conteneur est redémarré, mais cela ne nous permet d'interagir avec celui-ci.
Avant de découvrir comment faire cela, nous allons apprendre à éteindre un conteneur sans le supprimer.
Éteindre un conteneur
Pour arrêter un conteneur, c'est très simple il suffit d'utiliser la commande qui suit.
docker stop <id du conteneur>
Entrer dans un conteneur redémarré
Nous pouvons recourir à deux méthodes pour interagir.
1ère méthode : Redémarrer et interagir en une ligne de commande
Nous allons profiter de cette partie pour arrêter un conteneur lorsque nous ne sommes pas à l'intérieur de celui-ci. C'est très simple.
docker stop 04d3c76cdc0d
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Il est bien arrêté.
Maintenant essayons de le redémarrer tout en ajoutant les options -ai
pour interagir.
docker start -ai 04d3c76cdc0d
Ça marche 🤓 !
2ᵉ méthode : Redémarrer puis entrer dans le conteneur
Sortons de notre conteneur grâce à la commande exit
.
Notre conteneur a également été arrêté.
Nous allons de démarrer à nouveau.
docker start 04d3c76cdc0d
Pour ensuite y entrer avec une autre commande.
docker exec -it 04d3c76cdc0d bash
Analysons-là 🧐 !
docker exec
permet d'exécuter une commande dans un conteneur. Les options -ti
nous donne la possibilité d'interagir. Et bash
est la commande (qui doit être un exécutable) qui s'exécutera. Nous utilisons bash car nous avons besoin d'un shell (bash ou un autre) pour interagir.
Rappelez-vous simplement que pour entrer et interagir dans un conteneur, il faut utiliser la commande ci-dessus.
Il existe une particularité avec la commande exit
dans ce cas de figure. Lorsqu'on l'utilise après docker exec
, cette commande n'arrête pas le conteneur.
Vous pouvez maintenant supprimer ce conteneur.