Démarrer et arrêter un conteneur dans Docker

Vidéo sur Youtube Le play Youtube

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.