Comment utiliser la commande docker desktop start pour démarrer Docker Desktop

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 lab, nous allons explorer comment utiliser la commande docker start pour gérer le cycle de vie des conteneurs Docker. Nous commencerons par comprendre l'objectif fondamental de docker start et en quoi elle diffère de docker run.

À travers des exercices pratiques, vous apprendrez à démarrer des conteneurs arrêtés de manière synchrone, à démarrer des conteneurs en mode détaché (detached), et à spécifier un délai d'expiration (timeout) pour l'opération de démarrage. À la fin de ce lab, vous serez compétent dans l'utilisation de docker start pour reprendre efficacement vos conteneurs Docker.


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/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555148{{"Comment utiliser la commande docker desktop start pour démarrer Docker Desktop"}} docker/ps -.-> lab-555148{{"Comment utiliser la commande docker desktop start pour démarrer Docker Desktop"}} docker/start -.-> lab-555148{{"Comment utiliser la commande docker desktop start pour démarrer Docker Desktop"}} docker/stop -.-> lab-555148{{"Comment utiliser la commande docker desktop start pour démarrer Docker Desktop"}} docker/create -.-> lab-555148{{"Comment utiliser la commande docker desktop start pour démarrer Docker Desktop"}} docker/pull -.-> lab-555148{{"Comment utiliser la commande docker desktop start pour démarrer Docker Desktop"}} end

Comprendre l'objectif de docker start

Dans cette étape, nous allons comprendre l'utilité de la commande docker start. La commande docker start est utilisée pour démarrer un ou plusieurs conteneurs arrêtés. Lorsque vous arrêtez un conteneur avec docker stop, son état est sauvegardé et vous pouvez le reprendre ultérieurement avec docker start. Ceci diffère de docker run, qui crée un nouveau conteneur à partir d'une image puis le démarre.

Commençons par créer un conteneur simple que nous pourrons arrêter puis redémarrer. Nous utiliserons l'image ubuntu et exécuterons une commande qui maintient le conteneur actif pendant une courte durée.

docker run -d --name my-ubuntu ubuntu sleep 60

Cette commande exécute un conteneur Ubuntu en mode détaché (-d), le nomme my-ubuntu et exécute la commande sleep 60 à l'intérieur du conteneur. La commande sleep 60 maintiendra le conteneur actif pendant 60 secondes.

Vérifions maintenant l'état du conteneur avec docker ps.

docker ps

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

Ensuite, nous allons arrêter le conteneur avec la commande docker stop.

docker stop my-ubuntu

Cette commande envoie un signal d'arrêt au conteneur my-ubuntu.

Vérifions à nouveau l'état du conteneur avec docker ps.

docker ps

Vous devriez constater que le conteneur my-ubuntu n'apparaît plus dans la sortie de docker ps (qui n'affiche que les conteneurs en cours d'exécution). Pour voir tous les conteneurs, y compris ceux arrêtés, utilisez docker ps -a.

docker ps -a

Vous devriez maintenant voir my-ubuntu listé avec un statut Exited. Ceci confirme que le conteneur a bien été arrêté.

Enfin, nous utiliserons la commande docker start pour redémarrer le conteneur arrêté.

docker start my-ubuntu

Cette commande démarre le conteneur my-ubuntu.

Vérifions une dernière fois l'état du conteneur avec docker ps.

docker ps

Vous devriez voir à nouveau le conteneur my-ubuntu listé avec un statut Up. Cela démontre que docker start a bien permis de reprendre le conteneur précédemment arrêté.

En résumé, docker start sert à reprendre un conteneur arrêté en préservant son état, tandis que docker run crée et démarre un nouveau conteneur.

Démarrer Docker Desktop en mode synchrone

Dans cette étape, nous allons explorer comment démarrer un conteneur Docker en mode synchrone. Lorsque vous démarrez un conteneur de manière synchrone, la commande attend que le conteneur termine son exécution avant de rendre le contrôle à votre terminal. Ce comportement est par défaut lorsque vous exécutez une commande directement dans un conteneur sans l'option -d (detached).

Utilisons un simple conteneur ubuntu pour illustrer l'exécution synchrone. Nous allons exécuter une commande qui affiche un message puis se termine.

D'abord, assurez-vous que l'image ubuntu est disponible. Sinon, téléchargez-la :

docker pull ubuntu

Maintenant, exécutez un conteneur en mode synchrone qui affiche "Hello from Ubuntu" puis se termine.

docker run --rm ubuntu echo "Hello from Ubuntu"

Décomposons cette commande :

  • docker run : Commande pour créer et exécuter un nouveau conteneur
  • --rm : Cette option supprime automatiquement le conteneur après son arrêt (utile pour les conteneurs temporaires)
  • ubuntu : Nom de l'image à utiliser
  • echo "Hello from Ubuntu" : Commande à exécuter dans le conteneur

Lorsque vous exécutez cette commande, vous verrez directement dans votre terminal le message "Hello from Ubuntu". L'invite de commande ne reviendra qu'après que la commande echo dans le conteneur ait terminé et que le conteneur se soit arrêté. C'est le mode d'exécution synchrone.

Comparons cela avec le mode détaché vu précédemment, où la commande retournait immédiatement pendant que le conteneur tournait en arrière-plan.

Pour mieux illustrer le comportement synchrone, exécutons une commande qui prend plus de temps.

docker run --rm ubuntu sleep 5

Cette commande exécutera un conteneur Ubuntu avec la commande sleep 5, qui met en pause l'exécution pendant 5 secondes. Vous remarquerez que votre terminal sera bloqué pendant 5 secondes avant que la commande ne se termine. Cela s'explique par le fait que la commande docker run attend que la commande sleep 5 dans le conteneur se termine.

Ce mode synchrone est utile lorsque vous devez exécuter une commande dans un conteneur et attendre son résultat ou son achèvement avant de poursuivre d'autres actions dans votre script ou workflow.

Démarrer Docker Desktop en mode détaché

Dans cette étape, nous allons apprendre à démarrer un conteneur Docker en mode détaché. Le mode détaché signifie que le conteneur s'exécute en arrière-plan, et la commande Docker rend immédiatement le contrôle à votre terminal. Ceci est utile pour les services de longue durée ou les applications avec lesquelles vous n'avez pas besoin d'interagir directement dans le terminal.

Pour démarrer un conteneur en mode détaché, vous utilisez l'option -d ou --detach avec les commandes docker run ou docker start.

Démarrons un simple conteneur de serveur web Nginx en mode détaché. D'abord, téléchargez l'image nginx si vous ne l'avez pas localement.

docker pull nginx

Maintenant, exécutez le conteneur Nginx en mode détaché et mappez le port 80 du conteneur vers le port 8080 sur votre machine hôte.

docker run -d --name my-nginx -p 8080:80 nginx

Décomposons cette commande :

  • docker run : Crée et exécute un nouveau conteneur
  • -d : Exécute le conteneur en mode détaché (en arrière-plan)
  • --name my-nginx : Donne au conteneur le nom my-nginx
  • -p 8080:80 : Mappe le port 80 à l'intérieur du conteneur vers le port 8080 sur votre hôte. Cela vous permet d'accéder au serveur web Nginx depuis votre navigateur via http://localhost:8080
  • nginx : Le nom de l'image à utiliser

Après avoir exécuté cette commande, vous verrez une longue chaîne de caractères s'afficher dans votre terminal. Il s'agit de l'ID du conteneur. L'invite de commande reviendra immédiatement, indiquant que le conteneur s'exécute en arrière-plan.

Pour vérifier que le conteneur est en cours d'exécution, utilisez la commande docker ps.

docker ps

Vous devriez voir le conteneur my-nginx listé avec un statut Up.

Vous pouvez également tester l'accès au serveur web Nginx depuis votre machine hôte avec curl.

curl http://localhost:8080

Vous devriez voir le contenu HTML de la page d'accueil par défaut de Nginx dans votre terminal. Ceci confirme que le conteneur fonctionne et est accessible via le port mappé.

Pour arrêter le conteneur détaché, utilisez la commande docker stop avec le nom ou l'ID du conteneur.

docker stop my-nginx

Après avoir arrêté le conteneur, vérifiez qu'il n'est plus en cours d'exécution avec docker ps.

docker ps

Le conteneur my-nginx ne devrait plus apparaître dans les résultats.

Le démarrage des conteneurs en mode détaché est essentiel pour exécuter des services et applications qui doivent fonctionner en continu sans bloquer votre terminal.

Démarrer Docker Desktop avec un timeout

Dans cette étape, nous allons apprendre à démarrer un conteneur Docker avec un timeout. La commande docker start possède un flag --attach qui permet de se connecter aux STDOUT/STDERR du conteneur et de transmettre les signaux. Lorsqu'elle est utilisée avec --attach, vous pouvez également spécifier un flag --timeout pour définir un délai avant l'arrêt du conteneur après la déconnexion du client. Ceci est particulièrement utile pour s'assurer qu'un conteneur ne continue pas à s'exécuter indéfiniment si le client qui l'a démarré est interrompu.

Commençons par créer un conteneur que nous pourrons démarrer avec un timeout. Nous utiliserons l'image ubuntu et exécuterons une commande qui maintient le conteneur en fonctionnement.

docker create --name my-timeout-ubuntu ubuntu sleep 60

Cette commande crée un conteneur nommé my-timeout-ubuntu à partir de l'image ubuntu et définit la commande sur sleep 60. Notez que nous avons utilisé docker create ici, ce qui crée le conteneur mais ne le démarre pas.

Maintenant, nous allons démarrer ce conteneur en utilisant docker start avec les flags --attach et --timeout. Nous définirons le timeout à 5 secondes.

docker start --attach --timeout 5 my-timeout-ubuntu

Décomposons cette commande :

  • docker start : Démarrer un conteneur arrêté
  • --attach : Se connecter aux STDOUT/STDERR du conteneur et transmettre les signaux
  • --timeout 5 : Définir un timeout de 5 secondes. Si le client (votre terminal dans ce cas) se déconnecte, Docker attendra 5 secondes que le conteneur s'arrête proprement. S'il ne s'arrête pas dans les 5 secondes, Docker enverra un signal SIGKILL pour l'arrêter de force
  • my-timeout-ubuntu : Le nom du conteneur à démarrer

Lorsque vous exécutez cette commande, vous serez connecté à la sortie du conteneur. Comme le conteneur exécute simplement sleep 60, vous ne verrez aucune sortie immédiatement.

Simulons maintenant une déconnexion client. Vous pouvez le faire en appuyant sur Ctrl+C dans votre terminal. Cela vous déconnectera du conteneur.

Après avoir appuyé sur Ctrl+C, Docker commencera le processus de timeout. Il attendra 5 secondes que le conteneur my-timeout-ubuntu s'arrête. Comme le conteneur exécute sleep 60, il ne s'arrêtera pas dans les 5 secondes, et Docker l'arrêtera de force.

Pour vérifier que le conteneur s'est arrêté, utilisez docker ps -a.

docker ps -a

Vous devriez voir my-timeout-ubuntu listé avec un statut Exited. Ceci confirme que le mécanisme de timeout a fonctionné et que le conteneur a été arrêté après la déconnexion du client.

L'utilisation du flag --timeout avec docker start --attach est une bonne pratique pour gérer le cycle de vie des conteneurs démarrés avec une connexion client, garantissant qu'ils sont correctement nettoyés même si le client se termine de manière inattendue.

Résumé

Dans ce lab, nous avons appris l'objectif fondamental de la commande docker start, qui consiste à relancer un conteneur arrêté tout en préservant son état. Nous l'avons distinguée de docker run, qui crée et démarre un nouveau conteneur. À travers des étapes pratiques, nous avons démontré comment :

  1. Créer un conteneur
  2. L'arrêter avec docker stop
  3. Vérifier son état arrêté avec docker ps -a
  4. Le redémarrer avec docker start
  5. Confirmer son état de fonctionnement avec docker ps

Nous avons également exploré différentes méthodes pour démarrer Docker Desktop à l'aide de la commande docker desktop start, notamment :

  • Le démarrage synchrone
  • Le mode détaché (en arrière-plan)
  • Le démarrage avec un timeout spécifié

Ces options offrent une flexibilité dans le contrôle du comportement de démarrage de Docker Desktop, adapté à des besoins et workflows spécifiques.