GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Taille de l'image Docker - Comment la garder petite ?

Présentation

Les images Docker sont des composants essentiels utilisés pour créer des conteneurs Docker. Bien qu'étroitement liés, il existe une différence majeure entre les images Docker et les conteneurs.

Une image Docker est la base d'un conteneur. Ces images sont créées en écrivant des Dockerfiles, des listes d'instructions exécutées automatiquement pour créer une image Docker spécifique.

Lors de la création d'une image Docker, vous voulez vous assurer de la garder légère. Éviter les images volumineuses accélère la création et le déploiement de conteneurs. Par conséquent, il est crucial de réduire la taille de l'image au minimum.

Poursuivez votre lecture pour savoir comment réduire la taille de vos images Docker.

Utiliser une base d'image plus petite (Alpine)

Pour créer une image Docker, vous avez besoin d'une base sur laquelle vous pouvez installer et ajouter des composants, au besoin. Vous pouvez télécharger une image parent existante et l'utiliser comme base de votre propre image ou en créer une à partir de rien.

Vous installez une variante d'un système d'exploitation comme base d'une image. La base du système d'exploitation peut avoir un impact considérable sur la taille de votre image Docker finale, c'est pourquoi le choix de la bonne image joue un rôle important.

Linux a créé une alternative utile, légère et dotée d'un environnement POSIX minimal - Alpine. Cette base d'image de distribution Linux ne fait que 5 Mo, construite autour de musl libc et BusyBox.

Comparé à d'autres images de système d'exploitation, Alpine est beaucoup plus petit. L'image du système d'exploitation la plus téléchargée, Ubuntu, fait 188 Mo, tandis qu'Alpine ne fait que 5 Mo.

Utiliser un fichier .dockerignore

L'exclusion de certains fichiers qui ne sont pas nécessaires pour votre image peut vous aider à réduire la taille de l'image. C'est là que le .dockerignore le fichier arrive.

Lors de la création d'une image, vous écrivez un Dockerfile avec les spécifications de ce à quoi cette image devrait ressembler.

Lors de la description du contexte de construction, il est également important d'inclure un fichier .dockerignore et de le stocker dans le même dossier que le Dockerfile.

Cette fonctionnalité Docker est lancée avec docker run . Le système vérifie s'il existe un tel fichier et applique ses exceptions et ignore les règles. De cette façon, vous supprimez tout contenu non pertinent du contexte construit.

Utiliser la fonctionnalité de constructions en plusieurs étapes dans Docker

Docker a introduit la fonctionnalité multi-étapes dans sa version 17.05. Il permet aux utilisateurs de diviser le Dockerfile en plusieurs étapes.

Chaque étape commence par un FROM instruction. L'artefact requis passe à l'étape suivante, laissant derrière lui le contenu dont vous n'aurez pas besoin dans l'artefact d'image final.

Étant donné que le processus ne transfère que les composants nécessaires de l'artefact, vous n'avez pas besoin de nettoyer manuellement après chaque instruction.

Avec la fonction multi-étapes, vous évitez d'ajouter des calques inutiles, ce qui a un impact considérable sur la taille globale de l'image.

Évitez d'ajouter des calques inutiles pour réduire la taille de l'image Docker

Une image Docker prend plus d'espace avec chaque couche que vous y ajoutez. Par conséquent, plus vous avez de calques, plus l'image nécessite d'espace.

Chaque RUN L'instruction dans un Dockerfile ajoute un nouveau calque à votre image. C'est pourquoi vous devriez essayer de faire la manipulation de fichiers à l'intérieur d'un seul RUN commande. Aussi, combinez différentes commandes en une seule instruction en utilisant le && option.

Par exemple, vous pouvez mettre à jour le référentiel et installer plusieurs packages en un seul RUN instruction. Pour obtenir une ligne claire et complète, utilisez la barre oblique inverse (\ ) pour saisir la commande sur plusieurs lignes.

Outre la mise à jour et l'installation des packages, vous devez également nettoyer le cache apt avec && rm -rf /var/lib/apt/lists/* pour économiser un peu plus d'espace.

RUN apt-get update && apt-get install -y\
         [package-one] \
         [package-two] 
   && rm -rf /var/lib/apt/lists/*

Méfiez-vous des mises à jour et des packages et dépendances inutiles

Une autre façon d'économiser de l'espace et de réduire la taille de votre image Docker consiste à vous assurer que vous utilisez la dernière version de la plate-forme sur laquelle vous construisez.

En disposant de la version la plus récente, vous évitez les mises à jour importantes qui téléchargent d'innombrables packages RPM et occupent beaucoup d'espace.

L'installation d'un package inclut également souvent le téléchargement de dépendances sur lesquelles le logiciel s'appuie. Cependant, parfois, le téléchargement stockera également des packages qui ne sont pas requis mais plutôt recommandés.

Ces packages indésirables peuvent s'accumuler et consommer beaucoup d'espace disque. Pour télécharger uniquement les dépendances principales, ajoutez le --no-install-recommends option à la commande d'installation.

Par exemple :

RUN apt-get install --no-install-recommends [package-one]

Astuce bonus :Mise en cache

Bien que cette astuce n'affecte pas la taille globale de l'image Docker, elle permet d'accélérer les builds Docker.

Docker accélère la création d'images en mettant en cache localement les couches existantes d'un Dockerfile et en les utilisant pour reconstruire les images plus rapidement.

Par exemple, imaginez que vous ayez un simple Dockerfile composé de trois couches. Une fois que vous avez créé une image à partir de ce fichier, le système met automatiquement en cache ces trois couches. La prochaine fois que vous créez l'image, elle se charge à partir du cache local.

Si vous décidez de modifier l'image et de changer l'un des calques, le cache ne sera utilisé pour rien après le calque modifié.

Nous vous recommandons de commander les instructions de manière à améliorer l'efficacité et à utiliser la fonction de mise en cache. Placez les instructions susceptibles de changer aussi bas que possible dans le Dockerfile.


Ubuntu
  1. Comment installer Docker sur Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  2. Comment déplacer des images Docker entre les hôtes

  3. Comment réduire la taille de l'image Docker :6 méthodes d'optimisation

  4. Comment valider les modifications apportées à une image Docker

  5. Comment créer une image personnalisée à partir d'un conteneur Docker

Docker :Comment l'utiliser de manière pratique - Partie 3

Comment installer Docker sur Ubuntu 20.04, 18.04, 21.04

Comment installer l'image AlmaLinux 8 dans le conteneur Docker

Comment créer une image Docker à partir d'un conteneur en cours d'exécution

Comment réduire la taille de l'image Docker dans les conteneurs Docker

Comment créer une image Docker personnalisée avec Dockerfile