Comment vérifier les détails de l'installation de Docker

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

Docker est une puissante plateforme de conteneurisation qui a révolutionné la manière dont les développeurs construisent, déploient et gèrent les applications. Dans ce tutoriel, vous apprendrez à vérifier votre installation de Docker et à vous assurer qu'elle fonctionne correctement. Vous découvrirez également comment résoudre les problèmes courants qui peuvent survenir lors de l'utilisation de Docker.

À la fin de ce lab, vous aurez une bonne compréhension de la vérification des détails de l'installation de Docker et de la confirmation que votre environnement Docker fonctionne correctement.

Ce Lab nécessite une connexion Internet pour l'apprentissage, seuls les utilisateurs Pro peuvent donc démarrer la machine virtuelle. Passez à l'offre Pro

Vérification de la version et de l'état de Docker

Avant de plonger dans les opérations Docker, il est essentiel de vérifier que Docker est correctement installé sur votre système et qu'il fonctionne correctement. Dans cette étape, nous allons vérifier la version de Docker et l'état du démon.

Vérifier la version de Docker

Tout d'abord, vérifions la version de Docker installée sur votre système. Ouvrez un terminal et exécutez la commande suivante :

docker --version
docker version

Cette commande affiche la version de Docker installée. Vous devriez voir une sortie similaire à :

Docker version 20.10.21, build baeda1f

Pour obtenir des informations de version plus détaillées, y compris les composants client et serveur, utilisez :

docker version

Cela affichera des informations de version complètes pour le client et le serveur Docker (démon), ainsi que d'autres détails tels que la version de Go utilisée pour construire Docker. La sortie ressemblera à :

Client:
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.1
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:02:28 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.1
  Git commit:       3056208
  Built:            Tue Oct 25 18:00:19 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        770bd0108c32f3fb5c73ae1264f7e503fe7b2661
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Si vous recevez une erreur indiquant "docker: command not found", cela indique que Docker n'est pas installé correctement ou n'est pas dans votre chemin d'accès (PATH).

Vérifier l'état du démon Docker

Ensuite, vérifions que le démon Docker (service) est en cours d'exécution. Le démon Docker est le service d'arrière-plan chargé de gérer les conteneurs Docker.

Exécutez la commande suivante :

sudo 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 Wed 2023-05-10 12:34:56 UTC; 2h 15min ago
   Main PID: 1234 (dockerd)
      Tasks: 8
     Memory: 38.5M
        CPU: 25.102s
     CGroup: /system.slice/docker.service
             └─1234 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Si le service Docker n'est pas en cours d'exécution, vous pouvez le démarrer avec :

sudo systemctl start docker

Pour vous assurer que Docker démarre automatiquement au démarrage de votre système, vous pouvez l'activer :

sudo systemctl enable docker

Vérifier les informations Docker

Pour obtenir une vue d'ensemble complète de votre installation Docker, utilisez la commande docker info :

docker info

Cela affichera des informations détaillées sur votre installation Docker, notamment :

  • Le nombre de conteneurs et d'images
  • Le pilote de stockage
  • Le répertoire racine de Docker
  • Les informations d'exécution
  • Les paramètres réseau
  • La configuration du registre

La sortie sera assez longue mais fournira des informations précieuses sur votre configuration Docker.

Exécution d'un conteneur de test

Maintenant que nous avons confirmé que Docker est installé et en cours d'exécution, testons-le en exécutant un simple conteneur. Cette étape permettra de vérifier que Docker peut télécharger des images et exécuter des conteneurs correctement.

Le conteneur Hello World

Docker propose une simple image "hello-world" spécialement conçue pour tester les installations Docker. Ce tout petit conteneur vérifie que :

  • Le client Docker peut se connecter au démon Docker
  • Le démon Docker peut télécharger des images depuis Docker Hub
  • Docker peut créer et exécuter un conteneur

Exécutons ce conteneur de test avec la commande suivante :

docker run hello-world

Lorsque vous exécutez cette commande pour la première fois, Docker va :

  1. Vérifier si l'image hello-world existe localement
  2. Si ce n'est pas le cas, la télécharger depuis Docker Hub
  3. Créer un conteneur à partir de cette image
  4. Démarrer le conteneur, qui affiche un message puis s'arrête

Vous devriez voir une sortie similaire à :

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:ffb13da98453e0f04d33a6eee5bb8e46ee50d08ebe17735fc0779d0349e889e9
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Ce message confirme que votre installation Docker fonctionne correctement.

Liste des conteneurs

Après avoir exécuté le conteneur hello-world, vérifions la liste des conteneurs sur votre système. Le conteneur que nous venons d'exécuter s'est déjà arrêté, mais nous pouvons toujours le voir dans la liste de tous les conteneurs.

Pour voir tous les conteneurs (y compris les arrêtés), exécutez :

docker ps -a

Vous devriez voir une sortie similaire à :

CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS   NAMES
b7c33e8f6cb8   hello-world   "/hello"   2 minutes ago   Exited (0) 2 minutes ago           romantic_galileo

Le paramètre -a affiche tous les conteneurs, y compris ceux qui sont arrêtés. Sans ce paramètre, docker ps n'afficherait que les conteneurs en cours d'exécution.

Notez que la colonne STATUS indique "Exited (0)", ce qui signifie que le conteneur a terminé sa tâche et s'est arrêté avec un code d'état de 0 (indiquant un succès).

Liste des images Docker

L'image hello-world a été téléchargée sur votre machine locale. Vérifions cela en listant toutes les images Docker :

docker images

Vous devriez voir une sortie similaire à :

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB

Cela confirme que l'image hello-world est stockée localement sur votre système.

Exploration des commandes de base de Docker

Maintenant que nous avons vérifié que notre installation de Docker fonctionne correctement, explorons quelques commandes de base de Docker qui vous aideront à gérer les conteneurs et les images.

Exécution d'un conteneur interactif

Contrairement au conteneur hello-world qui s'exécute et se termine immédiatement, nous pouvons exécuter des conteneurs de manière interactive. Exécutons un conteneur Ubuntu et intéragissons avec son shell :

docker run -it ubuntu bash

Cette commande :

  • -i garde l'entrée standard (STDIN) ouverte
  • -t alloue un pseudo-terminal (TTY)
  • ubuntu est le nom de l'image
  • bash est la commande à exécuter à l'intérieur du conteneur

Une fois le conteneur démarré, vous vous trouverez à l'invite bash à l'intérieur du conteneur :

root@3f4d92618a09:/#

L'invite indique que vous êtes connecté en tant que root dans le conteneur. La chaîne alphanumérique est l'identifiant du conteneur.

Essayez d'exécuter quelques commandes Linux à l'intérieur du conteneur :

cat /etc/os-release

Cela affichera des informations sur la version d'Ubuntu exécutée dans le conteneur :

PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
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"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

Lorsque vous avez terminé votre exploration, quittez le conteneur en tapant :

exit

Cela vous ramènera à votre terminal hôte.

Gestion du cycle de vie des conteneurs

Explorons comment gérer le cycle de vie d'un conteneur. Tout d'abord, démarrons un conteneur en mode détaché :

docker run -d --name web nginx

Cette commande :

  • -d exécute le conteneur en mode détaché (en arrière-plan)
  • --name web attribue le nom "web" au conteneur
  • nginx est l'image à utiliser

Vous verrez un long identifiant de conteneur affiché à l'écran.

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

docker ps

Vous devriez voir le conteneur nginx en cours d'exécution :

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
7d3f8c1f8a3d   nginx     "/docker-entrypoint.…"   10 seconds ago   Up 10 seconds   80/tcp    web

Pour arrêter le conteneur :

docker stop web

Vérifions qu'il est arrêté :

docker ps

Le conteneur ne devrait plus apparaître dans la liste des conteneurs en cours d'exécution. Pour voir tous les conteneurs, y compris les arrêtés :

docker ps -a

Vous devriez voir les conteneurs nginx et hello-world à l'état arrêté.

Pour redémarrer le conteneur :

docker start web

Et pour supprimer un conteneur lorsque vous n'en avez plus besoin :

docker stop web
docker rm web

Gestion des images Docker

Explorons comment gérer les images Docker. Pour lister toutes les images :

docker images

Vous devriez voir au moins les images hello-world et nginx.

Pour supprimer une image lorsque vous n'en avez plus besoin :

docker rmi hello-world

Notez que vous ne pouvez pas supprimer des images utilisées par des conteneurs (même arrêtés). Vous devrez d'abord supprimer ces conteneurs.

Informations système Docker

Pour vérifier l'espace disque utilisé par Docker (conteneurs, images, volumes) :

docker system df

Cela affichera un résumé de l'utilisation du disque :

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          2         1         187.8MB   187.8MB (99%)
Containers      2         0         0B        0B
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

Pour obtenir des informations plus détaillées :

docker system df -v

Cela affichera une ventilation de chaque image et conteneur ainsi que leurs tailles.

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 :

  1. Vérifiez l'état du service Docker :
sudo systemctl status docker
  1. S'il n'est pas en cours d'exécution, démarrez-le :
sudo systemctl start docker
  1. 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 :

  1. Vérifiez l'utilisation du disque Docker :
docker system df
  1. 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 :

  1. Vérifiez la configuration réseau de Docker :
docker network ls
  1. Inspectez un réseau spécifique :
docker network inspect bridge
  1. 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.

Résumé

Dans ce laboratoire, vous avez appris les compétences essentielles pour vérifier et gérer votre installation Docker :

  • Vérifier la version de Docker et l'état du démon pour confirmer une installation correcte
  • Exécuter des conteneurs de test pour vérifier le fonctionnement de Docker
  • Utiliser les commandes de base de Docker pour gérer les conteneurs et les images
  • Explorer la gestion du cycle de vie des conteneurs
  • Résoudre les problèmes courants de Docker

Ces compétences constituent une base solide pour travailler avec les conteneurs Docker. Vous pouvez désormais vérifier en toute confiance que votre environnement Docker est correctement configuré et résoudre tout problème qui pourrait survenir.

Au fur et à mesure de votre progression dans le monde de Docker, vous pourrez vous appuyer sur ces bases pour créer, déployer et gérer efficacement des applications conteneurisées.