Comment utiliser la commande docker desktop restart pour redé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, vous apprendrez comment redémarrer Docker Desktop, une opération fondamentale pour gérer votre environnement Docker. Nous explorerons l'objectif du redémarrage de Docker Desktop, qui équivaut à redémarrer le service du démon Docker dans un environnement Linux comme celui fourni dans cette VM LabEx.

Vous exécuterez la commande de redémarrage de base, apprendrez comment redémarrer Docker Desktop en mode détaché (detached mode), et comprendrez comment définir un délai d'attente (timeout) pour le processus de redémarrage. Cette expérience pratique vous donnera les connaissances nécessaires pour gérer et dépanner efficacement votre configuration Docker en redémarrant le démon lorsque nécessaire.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/restart("Restart Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ps -.-> lab-555147{{"Comment utiliser la commande docker desktop restart pour redémarrer Docker Desktop"}} docker/start -.-> lab-555147{{"Comment utiliser la commande docker desktop restart pour redémarrer Docker Desktop"}} docker/stop -.-> lab-555147{{"Comment utiliser la commande docker desktop restart pour redémarrer Docker Desktop"}} docker/restart -.-> lab-555147{{"Comment utiliser la commande docker desktop restart pour redémarrer Docker Desktop"}} docker/info -.-> lab-555147{{"Comment utiliser la commande docker desktop restart pour redémarrer Docker Desktop"}} docker/system -.-> lab-555147{{"Comment utiliser la commande docker desktop restart pour redémarrer Docker Desktop"}} end

Comprendre l'objectif du redémarrage de Docker Desktop

Dans cette étape, nous allons comprendre l'objectif du redémarrage de Docker Desktop. Bien que l'environnement LabEx fournisse une VM Linux avec Docker préinstallé, le concept de redémarrage du démon Docker est fondamental pour gérer les environnements Docker, y compris Docker Desktop sur d'autres systèmes d'exploitation.

Le démon Docker est le service en arrière-plan qui gère les objets Docker tels que les images, les conteneurs, les réseaux et les volumes. Parfois, vous pourriez avoir besoin de redémarrer le démon Docker pour diverses raisons, telles que :

  • Appliquer des modifications de configuration : Certaines modifications de configuration du démon Docker nécessitent un redémarrage pour prendre effet.
  • Résoudre des problèmes : Redémarrer le démon peut résoudre divers problèmes, tels que des conteneurs qui ne démarrent pas, des problèmes de réseau ou des problèmes de performance.
  • Libérer des ressources : Dans certains cas, redémarrer le démon peut aider à libérer des ressources système qui pourraient être consommées par le processus Docker.

Dans un environnement Linux comme la VM LabEx, vous interagissez directement avec le démon Docker via l'interface en ligne de commande docker. L'équivalent du redémarrage de Docker Desktop sur d'autres systèmes d'exploitation est le redémarrage du service du démon Docker sur Linux.

Pour vérifier l'état du service Docker dans la VM LabEx, vous pouvez utiliser la commande systemctl :

systemctl status docker

Vous devriez voir une sortie indiquant que le service Docker est actif et en cours d'exécution.

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: https://docs.docker.com
   Main PID: ... (dockerd)
      Tasks: ...
     Memory: ...
        CPU: ...
     CGroup: /system.slice/docker.service
             └─... /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Cette sortie confirme que le démon Docker s'exécute comme un service système. Bien que nous ne redémarrerons pas le service dans cette étape spécifique pour éviter de perturber l'environnement, comprendre son état est la première étape pour le gérer.

Exécuter la commande basique de redémarrage de Docker Desktop

Dans cette étape, nous allons apprendre comment redémarrer le démon Docker dans un environnement Linux, ce qui est analogue au redémarrage de Docker Desktop. Comme nous l'avons vu à l'étape précédente, le démon Docker est un service système. Pour redémarrer un service système sous Linux, nous utilisons la commande systemctl.

La commande basique pour redémarrer le service Docker est sudo systemctl restart docker. La commande sudo est utilisée car le redémarrage des services système nécessite généralement des privilèges administratifs. La commande systemctl restart arrête le service s'il est en cours d'exécution puis le relance.

Avant de redémarrer, exécutons une commande Docker simple pour vérifier que le démon est réactif. Nous pouvons lister les conteneurs en cours d'exécution avec docker ps. Comme nous n'avons pas encore démarré de conteneurs, le résultat devrait être vide ou n'afficher que les en-têtes de colonnes.

docker ps

Maintenant, redémarrons le service Docker. Exécutez la commande suivante :

sudo systemctl restart docker

Cette commande va arrêter puis relancer le démon Docker. Vous ne verrez pas beaucoup de sortie à moins qu'une erreur ne survienne.

Une fois le redémarrage terminé, vérifions à nouveau le statut du service Docker pour confirmer qu'il est en cours d'exécution :

systemctl status docker

Vous devriez voir une sortie similaire à celle de l'étape précédente, indiquant que le service est actif et en cours d'exécution, mais la ligne "Active" affichera un horodatage récent, indiquant qu'il a été redémarré.

Enfin, exécutons à nouveau docker ps pour confirmer que le démon Docker est réactif après le redémarrage :

docker ps

Le résultat devrait à nouveau afficher les en-têtes des conteneurs, confirmant que le démon Docker est opérationnel.

Le redémarrage du démon Docker est une étape courante de dépannage et est nécessaire après certaines modifications de configuration.

Redémarrer Docker Desktop en mode détaché

Dans cette étape, nous allons explorer le concept d'exécution de processus en "mode détaché" et son lien avec la gestion du démon Docker. Bien que le terme "mode détaché" soit plus couramment associé à l'exécution de conteneurs Docker en arrière-plan, le principe sous-jacent d'exécution d'un processus sans attacher le terminal est pertinent pour les services système comme le démon Docker.

Lorsque vous exécutez une commande au premier plan, votre terminal reste occupé jusqu'à ce que la commande se termine. En revanche, l'exécution d'un processus en arrière-plan ou "détaché" vous permet de continuer à utiliser votre terminal pour d'autres tâches. Les services système comme le démon Docker sont conçus pour s'exécuter automatiquement en arrière-plan au démarrage du système.

Dans le contexte de systemctl, la commande restart s'exécute par défaut de manière à ne pas garder votre terminal attaché. Elle initie le processus d'arrêt et de démarrage et rend le contrôle à votre terminal une fois la commande exécutée, même si le service est encore en cours de démarrage complet. Ceci est similaire au concept de mode détaché pour les conteneurs.

Pour illustrer cela, redémarrons à nouveau le service Docker en utilisant la même commande que précédemment :

sudo systemctl restart docker

Remarquez qu'après l'exécution de la commande, votre invite de terminal revient immédiatement. La commande systemctl restart elle-même n'attend pas que le démon Docker soit pleinement opérationnel avant de retourner. Le démon est maintenant en train de redémarrer en arrière-plan.

Vous pouvez vérifier que le service est en train de redémarrer et finira par s'exécuter en arrière-plan en vérifiant son statut :

systemctl status docker

Vous verrez le statut passer de "stopping" à "starting" et enfin à "active (running)". Cela se produit indépendamment de votre session terminal après avoir initié la commande de redémarrage.

Ce comportement de systemctl restart est analogue à l'exécution d'un conteneur Docker avec l'option -d ou --detach, où le conteneur démarre en arrière-plan et ne bloque pas votre terminal.

Redémarrer Docker Desktop avec un timeout

Dans cette étape, nous allons apprendre comment redémarrer le démon Docker avec un timeout. Bien que la commande systemctl restart elle-même ne dispose pas d'un paramètre de timeout intégré comme certaines commandes Docker (par exemple docker stop --time), le concept de timeout est important dans la gestion des services.

Dans le contexte de systemctl, les opérations d'arrêt et de démarrage qui se produisent lors d'un redémarrage ont leurs propres timeouts internes définis dans le fichier unité du service. Si un service ne parvient pas à s'arrêter ou à démarrer dans ces délais impartis, systemd (le gestionnaire de système et de services) signalera généralement une erreur.

Par exemple, si le démon Docker est occupé et met trop de temps à s'arrêter lors de l'exécution de systemctl restart, systemd pourrait finalement terminer le processus et signaler un échec. De même, si le démon ne parvient pas à démarrer dans le timeout configuré, l'opération de démarrage échouera.

Bien que nous ne puissions pas spécifier directement un timeout sur la commande systemctl restart elle-même pour l'ensemble du processus de redémarrage, nous pouvons simuler un scénario où un timeout pourrait être pertinent en observant le comportement du statut du service pendant un redémarrage.

Lançons un nouveau redémarrage du service Docker :

sudo systemctl restart docker

Immédiatement après l'exécution de la commande, vous pouvez vérifier rapidement le statut. Vous pourriez brièvement voir le service dans un état "stopping" ou "activating" avant qu'il ne revienne à "active (running)".

systemctl status docker

Le temps nécessaire au service pour passer par ces états est influencé par les timeouts internes configurés pour l'unité de service Docker. Si le service devait se bloquer pendant l'arrêt ou le démarrage, systemd appliquerait ces timeouts.

Par exemple, si l'opération d'arrêt dépassait le timeout, vous pourriez voir un message d'erreur dans la sortie de systemctl status docker ou dans les journaux système (journalctl -u docker).

Bien que nous n'ayons pas d'option directe en ligne de commande pour définir un timeout pour l'ensemble de l'opération systemctl restart, comprendre que les processus sous-jacents d'arrêt et de démarrage sont soumis à des timeouts est crucial pour résoudre les problèmes de gestion de services. Si un redémarrage échoue systématiquement, l'analyse des journaux du service pour des erreurs de timeout est un bon point de départ.

Résumé

Dans ce lab, nous avons appris l'objectif du redémarrage de Docker Desktop, qui est analogue au redémarrage du service démon Docker dans un environnement Linux. Nous avons compris que le redémarrage est nécessaire pour appliquer des modifications de configuration, résoudre des problèmes et libérer des ressources. Nous avons également appris comment vérifier l'état du service Docker en utilisant la commande systemctl status docker dans une machine virtuelle Linux.

Nous avons ensuite procédé à l'exécution de la commande de base docker desktop restart, bien que l'environnement du lab utilise une machine virtuelle Linux où nous interagissons directement avec le démon Docker. Nous avons également exploré le redémarrage de Docker Desktop en mode détaché et avec un timeout spécifié, comprenant les implications pratiques de ces options pour gérer efficacement l'environnement Docker.