Comment utiliser la commande docker container start pour redémarrer des conteneurs

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo (lab), vous apprendrez à utiliser la commande docker container start pour redémarrer des conteneurs arrêtés. Vous commencerez par créer et arrêter des conteneurs en utilisant les images hello-world et ubuntu.

Ensuite, vous explorerez différentes méthodes pour démarrer un conteneur arrêté, notamment en le démarrant simplement, en le démarrant et en vous attachant à sa sortie, et en le démarrant de manière interactive. Cela démontrera la flexibilité de la commande docker container start pour gérer le cycle de vie des conteneurs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/attach("Attach to Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555122{{"Comment utiliser la commande docker container start pour redémarrer des conteneurs"}} docker/ps -.-> lab-555122{{"Comment utiliser la commande docker container start pour redémarrer des conteneurs"}} docker/start -.-> lab-555122{{"Comment utiliser la commande docker container start pour redémarrer des conteneurs"}} docker/stop -.-> lab-555122{{"Comment utiliser la commande docker container start pour redémarrer des conteneurs"}} docker/attach -.-> lab-555122{{"Comment utiliser la commande docker container start pour redémarrer des conteneurs"}} docker/pull -.-> lab-555122{{"Comment utiliser la commande docker container start pour redémarrer des conteneurs"}} end

Créer et arrêter un conteneur

Dans cette étape, vous apprendrez comment créer et arrêter un conteneur Docker. Un conteneur est une instance exécutable d'une image. Vous pouvez créer, démarrer, arrêter, déplacer ou supprimer un conteneur en utilisant l'API Docker ou la CLI.

Commencez par télécharger l'image hello-world depuis Docker Hub. Il s'agit d'une image très légère utile pour les tests.

docker pull hello-world

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement et d'extraction.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Maintenant, créons et exécutons un conteneur à partir de l'image hello-world. Lorsque vous exécutez cette commande, Docker crée un nouveau conteneur et exécute la commande spécifiée dans l'image. Dans le cas de hello-world, la commande se contente d'afficher un message puis se termine.

docker run hello-world

Vous devriez voir une sortie similaire à ceci :

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Cette sortie confirme que le conteneur s'est exécuté avec succès et a affiché son message. Comme la commande dans le conteneur est terminée, le conteneur s'est arrêté.

Pour voir les conteneurs sur votre système, y compris ceux qui sont arrêtés, utilisez la commande docker ps -a.

docker ps -a

Vous verrez une liste de conteneurs. Le conteneur hello-world devrait figurer dans la liste avec le statut Exited.

CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                      PORTS    NAMES
...            hello-world   "/hello"   About a minute ago   Exited (0) 58 seconds ago            ...

Maintenant, créons un autre conteneur, mais cette fois avec l'image ubuntu et une commande qui maintient le conteneur actif pendant une courte durée. Nous utiliserons la commande sleep pour garder le conteneur en vie pendant 10 secondes.

Commencez par télécharger l'image ubuntu :

docker pull ubuntu

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement.

Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Exécutez maintenant un conteneur à partir de l'image ubuntu avec la commande sleep 10. Nous utiliserons le mode détaché (-d) pour que le conteneur s'exécute en arrière-plan sans bloquer le terminal.

docker run -d ubuntu sleep 10

Cette commande affichera l'ID du conteneur.

[container_id]

Utilisez docker ps pour voir les conteneurs en cours d'exécution.

docker ps

Vous devriez voir le conteneur ubuntu listé avec le statut Up.

CONTAINER ID   IMAGE    COMMAND       CREATED         STATUS         PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About a minute ago   Up 5 seconds            ...

Après environ 10 secondes, la commande sleep 10 se terminera et le conteneur s'arrêtera. Utilisez à nouveau docker ps -a pour voir tous les conteneurs, y compris celui qui est arrêté.

docker ps -a

Le conteneur ubuntu devrait maintenant avoir le statut Exited.

CONTAINER ID   IMAGE    COMMAND       CREATED         STATUS                      PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About a minute ago   Exited (0) 5 seconds ago             ...
...

Enfin, arrêtons manuellement le conteneur ubuntu avec la commande docker stop. Vous pouvez arrêter un conteneur en cours d'exécution par son ID ou son nom. Nous utiliserons l'ID du conteneur affiché lors de son exécution. Remplacez [container_id] par l'ID réel de votre conteneur ubuntu.

docker stop [container_id]

Cette commande affichera l'ID du conteneur arrêté.

[container_id]

Utilisez à nouveau docker ps pour confirmer que le conteneur n'est plus en cours d'exécution.

docker ps

Le conteneur ubuntu ne devrait plus apparaître dans la liste des conteneurs actifs.

Démarrer un conteneur arrêté

Dans l'étape précédente, nous avons créé et arrêté un conteneur basé sur l'image ubuntu. Dans cette étape, vous apprendrez comment redémarrer un conteneur arrêté.

Commencez par lister tous les conteneurs, y compris ceux qui sont arrêtés, pour trouver l'ID du conteneur ubuntu que nous avons créé.

docker ps -a

Recherchez le conteneur avec l'image ubuntu et le statut Exited. Notez son CONTAINER ID.

CONTAINER ID   IMAGE    COMMAND       CREATED          STATUS                      PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About 5 minutes ago   Exited (0) 4 minutes ago             ...
...

Maintenant, nous pouvons démarrer ce conteneur arrêté en utilisant la commande docker start suivie de l'ID du conteneur. Remplacez [container_id] par l'ID réel de votre conteneur ubuntu.

docker start [container_id]

Cette commande affichera l'ID du conteneur démarré.

[container_id]

Utilisez docker ps pour vérifier que le conteneur est maintenant en cours d'exécution.

docker ps

Vous devriez voir le conteneur ubuntu listé avec le statut Up.

CONTAINER ID   IMAGE    COMMAND       CREATED          STATUS         PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About 5 minutes ago   Up 5 seconds            ...

Comme la commande originale de ce conteneur était sleep 10, le conteneur s'exécutera pendant 10 secondes puis s'arrêtera à nouveau. Après quelques secondes, exécutez à nouveau docker ps -a pour voir son statut.

docker ps -a

Le conteneur ubuntu devrait maintenant être à nouveau dans l'état Exited.

CONTAINER ID   IMAGE    COMMAND       CREATED          STATUS                       PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About 5 minutes ago   Exited (0) 5 seconds ago              ...
...

Démarrer un conteneur arrêté est utile lorsque vous souhaitez reprendre le travail ou l'état d'une instance de conteneur précédente sans en créer une nouvelle.

Démarrer un conteneur et se connecter à sa sortie

Dans les étapes précédentes, nous avons créé et démarré des conteneurs. Lorsque nous avons utilisé docker run ou docker start en mode détaché (-d), le conteneur s'exécutait en arrière-plan. Parfois, vous souhaitez voir la sortie d'un conteneur pendant son exécution. Dans cette étape, vous apprendrez comment démarrer un conteneur et vous connecter à ses flux de sortie standard et d'erreur standard.

D'abord, créons un nouveau conteneur qui affichera un message toutes les secondes pendant 5 secondes. Nous utiliserons à nouveau l'image ubuntu.

docker run -d ubuntu /bin/bash -c 'for i in {1..5}; do echo "Hello from container $i"; sleep 1; done'

Cette commande crée et exécute un conteneur en mode détaché (-d). La commande exécutée dans le conteneur est un script bash qui boucle 5 fois, affichant un message et attendant 1 seconde à chaque itération. Notez l'ID du conteneur qui est affiché.

[container_id]

Maintenant, connectons-nous à ce conteneur en cours d'exécution pour voir sa sortie. Utilisez la commande docker attach suivie de l'ID du conteneur. Remplacez [container_id] par l'ID réel de votre conteneur ubuntu.

docker attach [container_id]

Vous devriez voir la sortie du conteneur apparaître dans votre terminal :

Hello from container 1
Hello from container 2
Hello from container 3
Hello from container 4
Hello from container 5

Après la fin de la boucle, le conteneur s'arrêtera et vous serez ramené à l'invite de votre terminal.

Si vous essayez de vous connecter à un conteneur déjà arrêté, la commande docker attach se terminera immédiatement.

Vérifions que le conteneur s'est bien arrêté en listant tous les conteneurs :

docker ps -a

Vous devriez voir le conteneur avec la commande /bin/bash -c 'for i in {1..5}; do echo "Hello from container $i"; sleep 1; done' dans l'état Exited.

CONTAINER ID   IMAGE    COMMAND                  CREATED         STATUS                      PORTS    NAMES
[container_id]   ubuntu   "/bin/bash -c 'for i…"   About a minute ago   Exited (0) 5 seconds ago             ...
...

Se connecter à un conteneur est utile pour surveiller la sortie d'un processus de longue durée ou à des fins de débogage.

Démarrer un conteneur en mode interactif

Dans les étapes précédentes, nous avons exécuté des conteneurs qui lançaient une commande puis s'arrêtaient, ou fonctionnaient en arrière-plan. Souvent, vous souhaitez interagir avec un conteneur, comme vous le feriez avec une machine virtuelle ou un serveur distant. Dans cette étape, vous apprendrez comment démarrer un conteneur en mode interactif et obtenir un shell à l'intérieur.

Pour exécuter un conteneur en mode interactif, nous utilisons la commande docker run avec les options -i et -t :

  • L'option -i maintient l'entrée standard (STDIN) ouverte, même si elle n'est pas connectée. Ceci est nécessaire pour les processus interactifs.
  • L'option -t alloue un pseudo-TTY, requis pour avoir un shell interactif.

Nous allons exécuter un conteneur ubuntu et lancer la commande /bin/bash pour obtenir un shell bash à l'intérieur du conteneur.

docker run -it ubuntu /bin/bash

Après avoir exécuté cette commande, vous verrez une invite de shell comme celle-ci :

root@[container_id]:/#

Cela indique que vous êtes maintenant à l'intérieur du conteneur ubuntu en cours d'exécution en tant qu'utilisateur root. Vous pouvez exécuter des commandes Linux standard dans ce conteneur. Par exemple, vérifions la version du système d'exploitation :

cat /etc/os-release

Vous devriez voir une sortie similaire à celle-ci, confirmant que vous êtes dans un conteneur Ubuntu :

NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04.3 LTS"
VERSION_ID="22.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy

Vous pouvez également essayer d'autres commandes, comme lister les fichiers du répertoire courant :

ls

Vous verrez le contenu standard du répertoire racine d'un système Ubuntu.

Pour quitter le conteneur et revenir à votre terminal hôte, vous pouvez taper exit à l'invite du shell du conteneur :

exit

Lorsque vous quittez le shell, le conteneur s'arrêtera car le processus principal (/bin/bash) s'est terminé.

Vérifions que le conteneur s'est arrêté en listant tous les conteneurs :

docker ps -a

Vous devriez voir le conteneur avec la commande /bin/bash dans l'état Exited.

CONTAINER ID   IMAGE    COMMAND       CREATED         STATUS                      PORTS    NAMES
[container_id]   ubuntu   "/bin/bash"   About a minute ago   Exited (0) 5 seconds ago             ...
...

L'exécution interactive de conteneurs est essentielle pour explorer des images de conteneurs, déboguer des applications à l'intérieur de conteneurs et effectuer des tâches administratives.

Résumé

Dans ce labo, vous avez appris à créer et arrêter des conteneurs Docker en utilisant les commandes docker run et docker stop. Vous avez pratiqué le téléchargement d'images avec docker pull et vérifié l'état des conteneurs avec docker ps -a. Vous avez également créé un conteneur qui s'est arrêté immédiatement (hello-world) et un autre qui est resté actif pendant un certain temps (ubuntu avec sleep).

Vous avez ensuite exploré différentes méthodes pour redémarrer des conteneurs arrêtés en utilisant la commande docker start. Vous avez appris comment :

  • Démarrer simplement un conteneur
  • Démarrer et se connecter à sa sortie avec l'option -a
  • Démarrer un conteneur en mode interactif avec l'option -i, ce qui vous permet d'exécuter des commandes dans le conteneur en cours d'exécution.