Comment récupérer une image 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 a révolutionné la façon dont nous développons, déployons et gérons les applications. Au cœur de cet écosystème se trouvent les images Docker, qui servent d'éléments de base pour la création et l'exécution d'applications conteneurisées. Dans ce tutoriel, nous vous guiderons à travers le processus de récupération (pull) des images Docker depuis un registre (registry), une étape cruciale pour exploiter la puissance de Docker dans vos projets.

À la fin de ce lab, vous serez capable de rechercher des images Docker, de les récupérer depuis Docker Hub, et de comprendre comment les utiliser dans vos applications conteneurisées.

Comprendre les images Docker

Avant de commencer à récupérer (pull) des images Docker, il est important de comprendre ce que sont les images Docker et comment elles fonctionnent.

Qu'est-ce qu'une image Docker ?

Une image Docker est un paquet léger et autonome qui contient tout ce qui est nécessaire pour exécuter une application :

  • Code de l'application
  • Environnement d'exécution
  • Bibliothèques et dépendances
  • Variables d'environnement
  • Fichiers de configuration

Les images sont les modèles utilisés pour créer des conteneurs Docker, qui sont les instances en cours d'exécution de ces images.

Dépôts d'images Docker

Les images Docker sont stockées dans des dépôts (repositories) au sein de registres (registries). Le registre public le plus populaire est Docker Hub, qui héberge des milliers d'images prêtes à l'emploi. Quelques points clés concernant Docker Hub :

  • Il contient des images officielles maintenues par les éditeurs de logiciels
  • Il héberge des images contribuées par la communauté et créées par les utilisateurs
  • Il permet aux organisations d'avoir des dépôts privés pour les images propriétaires

Nommage des images Docker

Les images Docker suivent une convention de nommage spécifique :

[registry/]username/repository:tag

Où :

  • registry est le nom d'hôte du registre (optionnel, par défaut Docker Hub)
  • username est le nom d'utilisateur ou le nom de l'organisation sur Docker Hub
  • repository est le nom de l'image
  • tag est la version de l'image (optionnel, par défaut "latest")

Par exemple : ubuntu:22.04 ou nginx:latest

Vérification de votre installation Docker

Avant de continuer, assurons-nous que Docker est correctement installé sur votre système. Ouvrez un terminal et exécutez :

docker --version

Vous devriez voir une sortie similaire à :

Docker version 20.10.21, build baeda1f

Cela confirme que Docker est installé et prêt à être utilisé.

Dans l'étape suivante, nous allons rechercher et récupérer notre première image Docker.

Recherche et récupération de votre première image Docker

Maintenant que nous comprenons ce que sont les images Docker, apprenons à les trouver et à les récupérer depuis Docker Hub.

Recherche d'images Docker

Avant de récupérer une image, vous souhaiterez peut-être rechercher les options disponibles. Utilisez la commande docker search pour trouver des images sur Docker Hub :

docker search ubuntu

Cela vous affichera une liste des images liées à Ubuntu disponibles sur Docker Hub. Vous devriez voir une sortie similaire à :

NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating s...   14938     [OK]
ubuntu-upstart                   Upstart is an event-based replacement for ...   111       [OK]
rastasheep/ubuntu-sshd           Dockerized SSH service, built on top of of...   256                  [OK]
...

La colonne OFFICIAL marquée avec [OK] indique les images maintenues par Docker ou le fournisseur du logiciel.

Récupération d'une image Docker

Pour télécharger une image Docker sur votre machine locale, utilisez la commande docker pull suivie du nom de l'image :

docker pull ubuntu:22.04

Cette commande récupère l'image Ubuntu 22.04 depuis Docker Hub. Vous devriez voir une progression de téléchargement similaire à :

22.04: Pulling from library/ubuntu
2ab09b027e7f: Pull complete
Digest: sha256:2b7412e6465c3c7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04

La sortie montre que Docker télécharge des couches individuelles de l'image. Chaque couche représente un ensemble de modifications du système de fichiers.

Récupération d'images sans tag

Si vous ne spécifiez pas de tag, Docker récupérera l'image taguée comme latest :

docker pull nginx

Cela récupérera la dernière version de l'image du serveur web Nginx :

Using default tag: latest
latest: Pulling from library/nginx
a603fa5e3b41: Pull complete
(...more layers...)
Digest: sha256:f9c305f882a7062db720e582ce619686cbe29742eea6e1db6dcf84b200eec560
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

Récupération depuis d'autres registres

Par défaut, docker pull télécharge les images depuis Docker Hub. Pour récupérer depuis d'autres registres, incluez le nom d'hôte du registre :

docker pull mcr.microsoft.com/dotnet/sdk:6.0

Cette commande récupère l'image .NET SDK 6.0 depuis Microsoft Container Registry.

Maintenant que vous avez récupéré quelques images Docker, passons à l'étape suivante pour apprendre à les gérer.

Gestion des images Docker

Après avoir récupéré des images Docker, vous devez savoir comment les lister, les inspecter et les gérer efficacement.

Lister les images Docker

Pour voir toutes les images Docker que vous avez téléchargées sur votre machine locale, utilisez la commande docker images (ou son alias docker image ls) :

docker images

Vous devriez voir une sortie similaire à :

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        22.04     58db3edaf2be   3 weeks ago    77.8MB
nginx         latest    605c77e624dd   4 weeks ago    142MB

Cette sortie affiche :

  • REPOSITORY : Le nom de l'image
  • TAG : La version de l'image
  • IMAGE ID : Un identifiant unique pour l'image
  • CREATED : Quand l'image a été créée
  • SIZE : La taille de l'image sur le disque

Inspecter les images Docker

Pour obtenir des informations détaillées sur une image spécifique, utilisez la commande docker inspect :

docker inspect ubuntu:22.04

Cette commande affiche un tableau JSON contenant tous les détails sur l'image, notamment :

  • Informations sur les couches (layer)
  • Variables d'environnement
  • Architecture
  • Système d'exploitation
  • Configuration

La sortie est assez longue et détaillée. Voici un extrait de ce que vous pourriez voir :

[
    {
        "Id": "sha256:58db3edaf2beXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "RepoTags": [
            "ubuntu:22.04"
        ],
        "RepoDigests": [
            "ubuntu@sha256:2b7412e6465c3fc7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f"
        ],
        ...
    }
]

Historique de l'image

Pour voir l'historique des couches (layer) d'une image (comment elle a été construite), utilisez la commande docker history :

docker history ubuntu:22.04

La sortie affiche chaque couche qui compose l'image :

IMAGE          CREATED       CREATED BY                                      SIZE
58db3edaf2be   3 weeks ago   /bin/sh -c #(nop)  CMD ["bash"]                0B
<missing>      3 weeks ago   /bin/sh -c #(nop) ADD file:15efc167a417...     77.8MB

Suppression des images Docker

Lorsque vous n'avez plus besoin d'une image, vous pouvez la supprimer pour libérer de l'espace disque en utilisant la commande docker rmi :

docker rmi nginx

En cas de succès, Docker affiche les ID des images supprimées :

Untagged: nginx:latest
Untagged: nginx@sha256:f9c305f882a7062db720e582ce619686cbe29742eea6e1db6dcf84b200eec560
Deleted: sha256:605c77e624ddb75e6110f997c58876bba43f0blindividualayeridshereXX
(...more layers deleted...)

Si l'image est utilisée par un conteneur, vous devrez d'abord supprimer le conteneur ou utiliser l'option -f (force) :

docker rmi -f nginx

Vous savez maintenant comment gérer vos images Docker. Passons à l'étape finale où nous allons réellement utiliser une image pour exécuter un conteneur.

Utilisation des images Docker

Récupérer des images Docker n'est que la première étape. Apprenons maintenant comment utiliser ces images pour exécuter des conteneurs.

Exécution d'un conteneur à partir d'une image

Pour créer et démarrer un conteneur à partir d'une image, utilisez la commande docker run :

docker run ubuntu:22.04 echo "Hello from Ubuntu container"

Cette commande :

  1. Crée un nouveau conteneur à partir de l'image ubuntu:22.04
  2. Exécute la commande echo "Hello from Ubuntu container" à l'intérieur du conteneur
  3. Affiche la sortie :
Hello from Ubuntu container

Après l'exécution de la commande, le conteneur s'arrête car il a terminé sa tâche.

Exécution d'un conteneur interactif

Pour démarrer un shell interactif à l'intérieur d'un conteneur, utilisez les options -i (interactive) et -t (terminal) :

docker run -it ubuntu:22.04 bash

Cela vous donne un shell bash à l'intérieur du conteneur Ubuntu où vous pouvez exécuter des commandes :

root@a1b2c3d4e5f6:/## ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr

Pour quitter le conteneur, tapez exit ou appuyez sur Ctrl+D :

root@a1b2c3d4e5f6:/## exit
exit

Exécution d'un conteneur en mode détaché

Pour exécuter un conteneur en arrière-plan (mode détaché), utilisez l'option -d :

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

Cette commande :

  1. Crée un conteneur nommé nginx-server à partir de l'image nginx
  2. L'exécute en mode détaché (-d)
  3. Mappe le port 8080 sur votre hôte vers le port 80 dans le conteneur
  4. Renvoie un ID de conteneur :
e1d0ac1dcb21a93d9d878dcf40c054eb9f3c2b1bf5ecce7c29b6fa8ce6b219c1

Accès au conteneur en cours d'exécution

Vous pouvez maintenant accéder au serveur web Nginx à l'adresse http://localhost:8080 dans votre navigateur, ou utiliser curl pour vérifier qu'il fonctionne :

curl localhost:8080

Cela devrait afficher la page d'accueil HTML de Nginx :

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</html>

Lister les conteneurs en cours d'exécution

Pour voir tous les conteneurs en cours d'exécution, utilisez :

docker ps

Cela affiche des informations sur vos conteneurs en cours d'exécution :

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
e1d0ac1dcb21   nginx     "/docker-entrypoint.…"   30 seconds ago   Up 29 seconds   0.0.0.0:8080->80/tcp   nginx-server

Arrêt et suppression des conteneurs

Pour arrêter un conteneur en cours d'exécution :

docker stop nginx-server

Pour supprimer un conteneur arrêté :

docker rm nginx-server

Vous avez maintenant utilisé avec succès les images Docker pour exécuter des conteneurs. C'est le flux de travail fondamental pour utiliser Docker dans vos processus de développement et de déploiement.

Résumé

Félicitations pour avoir terminé ce lab sur les images Docker. Vous avez acquis les compétences essentielles pour travailler avec les images Docker :

  1. Comprendre ce que sont les images Docker et comment elles sont organisées dans les registres (registries)
  2. Rechercher et récupérer des images Docker depuis Docker Hub
  3. Gérer vos images Docker locales, y compris les lister, les inspecter et les supprimer
  4. Utiliser les images Docker pour exécuter des conteneurs dans différents modes

Ces compétences constituent les bases du travail avec Docker et vous permettront de tirer parti de la conteneurisation dans votre flux de travail de développement. Vous pouvez maintenant récupérer n'importe quelle image Docker à partir de registres publics ou privés et les utiliser pour exécuter des applications conteneurisées.

Prochaines étapes pour un apprentissage plus approfondi :

  • Créer vos propres images Docker avec des Dockerfiles
  • Travailler avec Docker Compose pour les applications multi-conteneurs
  • Utiliser les volumes Docker pour le stockage persistant
  • Configurer le réseau des conteneurs

Continuez à explorer le vaste écosystème d'images Docker disponibles sur Docker Hub pour trouver des outils et des applications qui peuvent accélérer votre processus de développement.