Comment redémarrer le service Docker

DockerBeginner
Pratiquer maintenant

Introduction

Docker est une plateforme de conteneurisation puissante qui permet aux développeurs de déployer et de gérer des applications efficacement. Comprendre comment redémarrer les services Docker est crucial pour maintenir la stabilité du système et résoudre les problèmes potentiels de configuration ou de performance. Ce tutoriel fournit des conseils complets sur le redémarrage des services Docker dans différents scénarios et systèmes d'exploitation. Dans ce lab, vous apprendrez à redémarrer le démon Docker (Docker daemon) et les conteneurs individuels, et à comprendre l'impact des différentes méthodes de redémarrage.

Redémarrage du démon Docker (Docker Daemon)

Le démon Docker (Docker daemon) est le processus d'arrière-plan qui gère les objets Docker tels que les images, les conteneurs, les réseaux et les volumes. Le redémarrage du démon Docker est souvent nécessaire après avoir effectué des modifications de configuration ou pour résoudre des problèmes affectant l'ensemble de l'environnement Docker.

Dans cette étape, vous apprendrez à redémarrer le démon Docker à l'aide des commandes systemd.

Tout d'abord, vérifions l'état actuel du service Docker.

sudo systemctl status docker

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

Output of checking Docker service status

Maintenant, redémarrons le service Docker. Cela arrêtera tous les conteneurs en cours d'exécution gérés par le démon, puis redémarrera le démon.

sudo systemctl restart docker

Une fois la commande terminée, vérifiez à nouveau l'état pour confirmer que le service Docker a redémarré avec succès.

sudo systemctl status docker

Vous devriez voir que le service a été redémarré et est actif.

Alternativement, vous pouvez arrêter et démarrer le service Docker séparément. Tout d'abord, arrêtez le service :

sudo systemctl stop docker

Vérifiez l'état pour confirmer qu'il est inactif :

sudo systemctl status docker

Ensuite, démarrez le service :

sudo systemctl start docker

Enfin, vérifiez l'état une dernière fois pour vous assurer qu'il est actif :

sudo systemctl status docker

Le redémarrage du démon Docker est une opération fondamentale pour la gestion de votre environnement Docker. Il est important de savoir que cette action arrêtera tous les conteneurs en cours d'exécution.

Redémarrage de conteneurs individuels

Alors que le redémarrage de l'ensemble du démon Docker (Docker daemon) affecte tous les conteneurs, vous devez souvent redémarrer uniquement un conteneur spécifique. Ceci est utile pour appliquer des modifications de configuration spécifiques au conteneur, résoudre des problèmes avec une seule application ou simplement redémarrer un service s'exécutant dans un conteneur.

Dans cette étape, vous apprendrez à redémarrer des conteneurs Docker individuels.

Tout d'abord, récupérons une image Nginx simple et exécutons un conteneur.

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

Cette commande récupère l'image nginx, exécute un conteneur nommé my-nginx en mode détaché (-d) et mappe le port 80 de l'hôte au port 80 du conteneur (-p 80:80).

Vérifiez que le conteneur est en cours d'exécution :

docker ps

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

Maintenant, redémarrons le conteneur my-nginx.

docker restart my-nginx

Cette commande envoie un signal d'arrêt au conteneur, attend qu'il s'arrête correctement, puis le redémarre. Par défaut, Docker attend 10 secondes que le conteneur s'arrête avant de le tuer de force.

Vérifiez à nouveau l'état du conteneur :

docker ps

Le conteneur doit toujours être répertorié comme Up, mais la colonne STATUS indiquera qu'il a été redémarré (par exemple, Up X seconds).

Vous pouvez également spécifier un délai d'attente pour l'opération de redémarrage à l'aide de l'indicateur -t. Par exemple, pour attendre 5 secondes :

docker restart -t 5 my-nginx

Ceci est utile si vous devez donner à votre application plus ou moins de temps pour s'arrêter proprement.

Le redémarrage de conteneurs individuels offre un contrôle granulaire sur vos applications sans affecter les autres conteneurs en cours d'exécution ni le démon Docker lui-même.

Configuration des politiques de redémarrage des conteneurs

Docker vous permet de configurer des politiques de redémarrage (restart policies) pour les conteneurs. Une politique de redémarrage détermine si un conteneur doit être redémarré automatiquement par le démon Docker (Docker daemon) après sa sortie. Il s'agit d'une fonctionnalité essentielle pour garantir la disponibilité de vos applications.

Dans cette étape, vous apprendrez à configurer des politiques de redémarrage pour les conteneurs Docker.

Tout d'abord, arrêtons et supprimons le conteneur my-nginx précédent pour repartir de zéro.

docker stop my-nginx
docker rm my-nginx

Maintenant, exécutons un nouveau conteneur Nginx avec une politique de redémarrage always.

docker run -d --name my-nginx-always --restart=always -p 80:80 nginx

L'indicateur --restart=always indique à Docker de toujours redémarrer le conteneur s'il s'arrête, quel que soit le code de sortie. Il redémarrera également le conteneur lorsque le démon Docker démarre.

Vérifiez que le conteneur est en cours d'exécution :

docker ps

Maintenant, simulons une défaillance du conteneur en l'arrêtant manuellement.

docker stop my-nginx-always

Attendez quelques secondes, puis vérifiez à nouveau l'état du conteneur :

docker ps

Vous devriez voir que le conteneur my-nginx-always a été automatiquement redémarré par le démon Docker. La colonne STATUS indiquera qu'il est Up depuis une courte période.

Les autres politiques de redémarrage courantes incluent :

  • no : Ne pas redémarrer automatiquement le conteneur (par défaut).
  • on-failure : Redémarrez le conteneur uniquement s'il se termine avec un code de sortie différent de zéro (indiquant une erreur). Vous pouvez éventuellement spécifier le nombre maximal de tentatives de redémarrage (par exemple, on-failure:5).
  • unless-stopped : Redémarrez toujours le conteneur, sauf s'il est explicitement arrêté par l'utilisateur ou si le démon Docker est arrêté.

Essayons la politique on-failure. Arrêtez et supprimez le conteneur actuel :

docker stop my-nginx-always
docker rm my-nginx-always

Exécutez un nouveau conteneur avec la politique on-failure :

docker run -d --name my-nginx-on-failure --restart=on-failure -p 80:80 nginx

Vérifiez qu'il est en cours d'exécution :

docker ps

Maintenant, simulons un échec. Nous pouvons le faire en exécutant une commande à l'intérieur du conteneur qui se termine avec un statut différent de zéro.

docker exec my-nginx-on-failure sh -c "exit 1"

Vérifiez l'état du conteneur après quelques secondes :

docker ps

Le conteneur aurait dû être redémarré automatiquement car il s'est terminé avec un statut différent de zéro.

Les politiques de redémarrage sont un outil puissant pour assurer la résilience de vos applications conteneurisées. En configurant la politique appropriée, vous pouvez automatiser la récupération des conteneurs qui s'arrêtent de manière inattendue.

Résumé

Dans ce labo, vous avez appris à redémarrer le démon Docker (Docker daemon) et les conteneurs individuels. Vous avez exploré différentes méthodes pour redémarrer le démon à l'aide des commandes systemd et appris à redémarrer des conteneurs spécifiques à l'aide de la commande docker restart. De plus, vous avez découvert les politiques de redémarrage (restart policies) de Docker et comment les configurer pour redémarrer automatiquement les conteneurs en fonction de différentes conditions, améliorant ainsi la disponibilité de vos applications. Ces compétences sont fondamentales pour gérer et dépanner efficacement les environnements Docker.