Comment inspecter les détails d'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

Les images Docker sont les éléments de base des applications conteneurisées, et comprendre leurs détails est essentiel pour une utilisation efficace de Docker. Ce tutoriel vous guidera tout au long du processus d'inspection des détails des images Docker, des informations de base aux techniques avancées, vous permettant ainsi de gérer et d'optimiser vos projets basés sur Docker.

Comprendre les images Docker

Les images Docker sont les éléments de base fondamentaux des conteneurs Docker. Elles sont essentiellement des modèles en lecture seule qui contiennent les fichiers, les bibliothèques et les dépendances nécessaires pour exécuter une application. Les images Docker peuvent être considérées comme une capture d'un conteneur à un moment donné.

Comprendre la structure et la composition des images Docker est essentiel pour travailler efficacement avec Docker. Les images Docker sont construites à l'aide d'une série de couches, où chaque couche représente un changement ou une addition spécifique à l'image. Ces couches sont empilées les unes sur les autres, et lorsqu'un conteneur est créé à partir d'une image, il inclut toutes les couches qui composent l'image.

graph TD A[Base Image] --> B[Layer 1] B --> C[Layer 2] C --> D[Layer 3] D --> E[Docker Image]

Les images Docker peuvent être basées sur différentes images de base, telles que Ubuntu, CentOS ou Alpine, qui fournissent la base pour l'application. Les développeurs peuvent ensuite ajouter leurs propres couches personnalisées au-dessus de l'image de base pour créer une image Docker unique qui inclut leur application et ses dépendances.

L'un des principaux avantages de l'utilisation d'images Docker est la capacité de créer des environnements cohérents et reproductibles. En partageant et en distribuant des images Docker, les développeurs peuvent s'assurer que leurs applications s'exécuteront de la même manière dans différents environnements, réduisant ainsi le risque de problèmes de type "ça marche sur ma machine".

## Example: Building a Docker image based on Ubuntu 22.04
$ docker build -t my-app .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM ubuntu:22.04
 ---> 9141669e8366
Step 2/4 : RUN apt-get update && apt-get install -y python3
 ---> Running in 5a3d7c5d0b8a
...
Step 3/4 : COPY . /app
 ---> 6a1a3a2a9d0c
Step 4/4 : CMD ["python3", "/app/app.py"]
 ---> Running in 4c5e6d7a8b9c
Successfully built 6a1a3a2a9d0c
Successfully tagged my-app:latest

Dans l'exemple ci-dessus, nous construisons une image Docker basée sur l'image de base Ubuntu 22.04, installons Python3, copions notre code d'application dans l'image et définissons la commande par défaut pour exécuter l'application.

Inspecter les détails des images Docker

Une fois que vous avez une image Docker, il est important de savoir comment inspecter ses détails. Docker propose plusieurs commandes et options pour vous aider à mieux comprendre vos images.

Lister les images Docker

Pour lister toutes les images Docker sur votre système, vous pouvez utiliser la commande docker images :

$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
my-app        latest    6a1a3a2a9d0c   10 minutes ago 194MB
ubuntu        22.04     9141669e8366   2 weeks ago    72.8MB

Cette commande affiche le nom du référentiel, la balise (tag), l'identifiant de l'image, la date de création et la taille de chaque image sur votre système.

Inspecter les métadonnées de l'image

Pour obtenir des informations plus détaillées sur une image Docker spécifique, vous pouvez utiliser la commande docker inspect :

$ docker inspect my-app
[
    {
        "Id": "sha256:6a1a3a2a9d0c2f7d5c0f6c6b9c8d7e6c5d4c3b2a1",
        "RepoTags": [
            "my-app:latest"
        ],
        "RepoDigests": [],
        "Parent": "sha256:9141669e8366a3c6d1c3d9d7e6c5d4c3b2a1",
        "Comment": "",
        "Created": "2023-04-17T12:34:56.789012Z",
        "Container": "4c5e6d7a8b9c0d1e2f3g4h5i6j7k8l9m",
        "ContainerConfig": {
           ...
        },
        "DockerVersion": "20.10.14",
        "Author": "",
        "Config": {
           ...
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Layers": [
            "sha256:9141669e8366a3c6d1c3d9d7e6c5d4c3b2a1",
            "sha256:6a1a3a2a9d0c2f7d5c0f6c6b9c8d7e6c5d4c3b2a1"
        ]
    }
]

La commande docker inspect fournit une foule d'informations sur l'image, notamment son identifiant, ses balises, l'image parente, la date de création, la configuration et les couches qui composent l'image.

Inspecter les couches de l'image

Pour obtenir une vue plus détaillée des couches qui composent une image Docker, vous pouvez utiliser la commande docker history :

$ docker history my-app
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
6a1a3a2a9d0c   10 minutes ago COPY. /app                                     1.024kB
9141669e8366   2 weeks ago    /bin/sh -c #(nop)  CMD ["python3"]             0B
9141669e8366   2 weeks ago    /bin/sh -c apt-get update && apt-get install -y 20.3MB
9141669e8366   2 weeks ago    /bin/sh -c #(nop) ADD file:0e56c8c4a5d1a0e9c1d 72.8MB

Cette commande affiche les couches individuelles qui composent l'image Docker, y compris les commandes utilisées pour créer chaque couche et la taille de chaque couche.

En sachant comment inspecter les détails des images Docker, vous pouvez mieux comprendre la structure et la composition de vos images, ce qui peut être utile pour résoudre des problèmes, optimiser et partager vos images avec d'autres personnes.

Techniques avancées d'inspection d'images

Alors que les commandes de base docker inspect et docker history fournissent une grande quantité d'informations sur les images Docker, il existe des techniques avancées supplémentaires qui peuvent être utilisées pour inspecter les images plus en détail.

Inspecter les couches d'une image avec LabEx

LabEx, un outil puissant pour travailler avec Docker, propose une méthode améliorée pour inspecter les couches d'une image Docker. Avec LabEx, vous pouvez visualiser les couches d'une image Docker et explorer le contenu de chaque couche plus en détail.

$ labex image inspect my-app

Cette commande fournira une vue détaillée et interactive des couches qui composent l'image Docker my-app, y compris les modifications de fichiers et les métadonnées associées à chaque couche.

Analyser les vulnérabilités d'une image avec LabEx

En plus d'inspecter la structure des images Docker, LabEx peut également être utilisé pour analyser les vulnérabilités de sécurité présentes dans vos images. LabEx peut scanner vos images et fournir un rapport complet de toutes les vulnérabilités connues, vous aidant à identifier et à résoudre les risques potentiels de sécurité.

$ labex image scan my-app

Cette commande scannera l'image Docker my-app et fournira un rapport détaillé de toutes les vulnérabilités connues, y compris des informations sur les packages affectés, la gravité des vulnérabilités et les actions recommandées pour les résoudre.

Comparer des images Docker avec LabEx

LabEx permet également de comparer des images Docker, vous permettant de comprendre les différences entre deux images. Cela peut être particulièrement utile lorsque vous travaillez avec différentes versions d'une image ou lorsque vous essayez de comprendre les modifications apportées entre différentes builds.

$ labex image diff my-app:latest my-app:v1.0

Cette commande comparera les images Docker my-app:latest et my-app:v1.0 et fournira un rapport détaillé des différences entre elles, y compris les modifications apportées au contenu des fichiers, aux métadonnées et à la structure des couches.

En utilisant des outils avancés comme LabEx, vous pouvez mieux comprendre vos images Docker, identifier les problèmes potentiels de sécurité et gérer efficacement l'évolution de vos images au fil du temps.

Résumé

Dans ce guide complet, vous apprendrez à inspecter les détails d'une image Docker, depuis la compréhension des bases des images Docker jusqu'à l'exploration des techniques d'inspection avancées. À la fin de ce tutoriel, vous disposerez des connaissances et des compétences nécessaires pour gérer et optimiser efficacement vos applications basées sur Docker, en tirant parti des informations obtenues grâce à une inspection approfondie des images.