Résolution des problèmes courants de Docker
Même avec un environnement Docker correctement installé, vous pouvez rencontrer des problèmes lors de l'utilisation normale. Explorons quelques problèmes courants de Docker et leurs solutions.
Problème : Le démon Docker n'est pas en cours d'exécution
Vous pouvez sauter cette étape si vous avez déjà démarré le service Docker à l'étape précédente.
Si vous essayez d'exécuter une commande Docker et que vous obtenez une erreur comme celle-ci :
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Cela signifie que le démon Docker n'est pas en cours d'exécution. Pour résoudre ce problème :
- Vérifiez l'état du service Docker :
sudo systemctl status docker
- S'il n'est pas en cours d'exécution, démarrez-le :
sudo systemctl start docker
- Si le service ne parvient pas à démarrer, vérifiez les journaux pour les erreurs :
sudo journalctl -u docker
Simulons ce problème et sa résolution :
## Tout d'abord, arrêtez le service Docker pour simuler le problème
sudo systemctl stop docker
## Essayez d'exécuter une commande Docker
docker ps
## Vous verrez l'erreur "Cannot connect"
## Maintenant, redémarrez le service pour le résoudre
sudo systemctl start docker
## Vérifiez que Docker fonctionne à nouveau
docker ps
Problème : Permission refusée
Si vous voyez une erreur comme celle-ci :
Got permission denied while trying to connect to the Docker daemon socket
Cela signifie généralement que votre utilisateur n'a pas la permission d'accéder au socket Docker. La solution consiste à ajouter votre utilisateur au groupe docker :
sudo usermod -aG docker $USER
Après avoir exécuté cette commande, vous devriez normalement vous déconnecter et vous reconnecter pour que les modifications prennent effet. Comme nous sommes dans un environnement de laboratoire avec l'utilisateur labex
qui a déjà les autorisations appropriées, nous n'avons pas besoin d'effectuer cette étape.
Problème : Problèmes d'espace disque
Docker peut consommer une quantité importante d'espace disque au fil du temps avec des images, des conteneurs et des volumes inutilisés. Si votre système manque d'espace disque :
- Vérifiez l'utilisation du disque Docker :
docker system df
- Supprimez les ressources inutilisées :
## Supprimez tous les conteneurs arrêtés
docker container prune
## Supprimez toutes les images inutilisées
docker image prune
## Supprimez tous les volumes inutilisés
docker volume prune
## Ou supprimez tout ce qui est inutilisé en une seule commande
docker system prune
Démontrons la commande de nettoyage :
## Créez quelques conteneurs qui s'arrêteront immédiatement
docker run hello-world
docker run ubuntu echo "This will exit immediately"
## Maintenant, nettoyez les conteneurs arrêtés
docker container prune
Vous serez invité à confirmer l'opération :
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Tapez y
pour confirmer. Vous devriez voir une sortie indiquant les conteneurs supprimés.
Problème : Le conteneur ne démarre pas
Si un conteneur ne parvient pas à démarrer, vous pouvez l'investiguer en vérifiant ses journaux :
## Tout d'abord, essayez de démarrer un conteneur qui pourrait échouer
docker run --name failing-container ubuntu apt-get update
## Vérifiez les journaux
docker logs failing-container
Vous pourriez voir des erreurs dans les journaux qui indiquent pourquoi le conteneur a échoué.
Problème : Problèmes réseau
Si les conteneurs ne peuvent pas communiquer entre eux ou avec le monde extérieur :
- Vérifiez la configuration réseau de Docker :
docker network ls
- Inspectez un réseau spécifique :
docker network inspect bridge
- Testez la connectivité depuis l'intérieur d'un conteneur :
## Démarrez un conteneur avec la connectivité réseau
docker run -it ubuntu bash
## Depuis l'intérieur du conteneur, installez ping
apt-get update && apt-get install -y iputils-ping
## Essayez de pinguer un site web
ping google.com
## Quittez le conteneur
exit
Journaux et débogage Docker
Pour la résolution générale des problèmes de Docker, la vérification des journaux du démon Docker peut être utile :
sudo journalctl -u docker
Pour les journaux d'un conteneur spécifique :
docker logs <container_id>
Vous pouvez également obtenir un flux en temps réel des journaux :
docker logs -f <container_id>
Ces techniques de résolution de problèmes vous aideront à diagnostiquer et résoudre la plupart des problèmes courants de Docker.