paint-brush
Comment perdre des kilos sur votre image Docker ?par@infinity
2,203 lectures
2,203 lectures

Comment perdre des kilos sur votre image Docker ?

par Rishabh Agarwal4m2024/01/19
Read on Terminal Reader
Read this story w/o Javascript

Trop long; Pour lire

La conteneurisation est un processus de déploiement de logiciels qui regroupe le code d'une application avec tous les fichiers et bibliothèques dont elle a besoin pour s'exécuter sur n'importe quelle infrastructure. En optimisant vos images Docker, vous pouvez accélérer le cycle de développement global, mais vous renforcez également les mesures de sécurité en place, garantissant ainsi un environnement logiciel plus robuste et plus efficace.
featured image - Comment perdre des kilos sur votre image Docker ?
Rishabh Agarwal HackerNoon profile picture

« Conteneurisation », a répondu sans équivoque mon manager lorsque je lui ai posé des questions sur ce qui a le plus révolutionné l'industrie du développement logiciel. Il a fait valoir que sans la conteneurisation, la mise à l'échelle rapide et le déploiement mondial des logiciels actuels auraient constitué un défi bien plus formidable. Il est remarquable de noter que presque tous les logiciels utilisés aujourd'hui exploitent la conteneurisation à divers titres, soulignant son rôle indispensable dans l'alimentation de l'écosystème logiciel moderne !


Pour ceux d'entre vous qui ne le savent pas, voici une définition tirée du site Web d'AWS ~

 *“Containerisation is a software deployment process that bundles an application's code with all the files and libraries it needs to run on any infrastructure. Traditionally, to run any application on your computer, you had to install the version that matched your machine's operating system.”*


Les images servent de base aux conteneurs, semblables à des plans guidant leur création. Par conséquent, la conservation d’images de conteneurs légères et rationalisées accélère le processus de déploiement et facilite la distribution de ces images. En optimisant vos images Docker, vous pouvez non seulement accélérer le cycle de développement global, mais vous renforcez également les mesures de sécurité en place, garantissant ainsi un environnement logiciel plus robuste et plus efficace.


Dans cet article, nous explorerons différentes méthodes pour créer des images Docker efficaces, améliorant ainsi l'efficacité de votre application.

Packager une seule application par conteneur

C'est une erreur courante de traiter les conteneurs comme des machines virtuelles (VM) et de regrouper plusieurs applications dans un seul conteneur. Tout en augmentant la taille de votre conteneur, cette pratique présente également d’autres inconvénients.


On s’attend à ce qu’un conteneur ait une durée de vie étroitement liée à l’application qu’il exécute. Le conteneur doit démarrer au démarrage de l'application et s'arrêter à la fin de l'application. Les solutions d'orchestration de conteneurs telles que Docker et Kubernetes s'appuient largement sur cet attribut des conteneurs. Si un conteneur exécute de nombreuses applications, les outils d'orchestration ne pourront pas identifier et redémarrer votre application !

Utiliser intelligemment les caches

Les images sont composées de calques et chaque instruction de votre Dockerfile ajoute un nouveau calque. Les technologies de conteneurisation, telles que Docker, tenteront de réutiliser les couches des versions précédentes dans la mesure du possible afin de réduire le temps de construction. Le cache d'une couche ne peut être utilisé que si aucune des couches sous-jacentes n'a changé depuis les versions précédentes.


Pour améliorer la vitesse de création des images, il est avantageux de positionner les instructions susceptibles de changer fréquemment ci-dessous dans votre Dockerfile. Cette approche permet à Docker d'exploiter plus efficacement son système de mise en cache. Par exemple, étant donné que le code source subit souvent des modifications fréquentes, il est conseillé de le copier dans l'image vers la fin du processus.


Cache d'images ~ https://cloud.google.com/architecture/best-practices-for-building-containers


Même si cela n'allège pas vos images, cela accélère le processus de création !

Supprimez les outils inutiles

Souvent, les images de conteneurs incluent des outils inutiles, ce qui entraîne un gonflement des images et des vulnérabilités potentielles en matière de sécurité. Par exemple, des outils comme netcat peuvent être exploités par des pirates informatiques pour mener des activités malveillantes au sein de votre conteneur s'ils obtiennent un accès non autorisé.


La maintenance stricte de l'ensemble des outils et des bibliothèques fournis avec votre image de conteneur peut contribuer considérablement à réduire les menaces de sécurité et entraînerait également des images plus minces. Les images plus petites se téléchargent plus rapidement, ce qui signifie que le conteneur démarre plus rapidement.

Utilisez la plus petite image de base

L'image que nous référençons dans l'instruction FROM est appelée l'image de base. L'image de base dicte grandement la taille de l'image finale créée. Nous devrions essayer d'utiliser la plus petite image de base possible pour réduire la taille finale de notre image.


Essayez d'utiliser des images alpines autant que possible, car elles sont plus petites et contiennent souvent suffisamment d'outils pour prendre en charge les activités de développement.


Même lorsqu'une petite image ne contient pas tous les outils dont vous avez besoin, son utilisation peut néanmoins s'avérer une meilleure option. L'installation des packages dont vous avez besoin au-dessus de l'image de base plus légère peut toujours permettre d'économiser par rapport à l'utilisation de l'image plus lourde.

Copiez seulement ce qui est nécessaire !

Lors de la copie du code source, de nombreux fichiers et dossiers indésirables peuvent également être copiés. Cela augmente la taille de votre image et conduit finalement à des ballonnements. Essayez de minimiser la quantité de fichiers copiés et essayez de les maintenir au minimum.


L’importance de l’optimisation des images de conteneurs et de l’établissement de meilleures pratiques est souvent négligée dans notre secteur. Cependant, les avantages substantiels qui découlent de l’adhésion à ces pratiques ne peuvent être surestimés. En tant que développeurs, il est essentiel de donner systématiquement la priorité à la création d'images de conteneurs minces et rapides.


Nous arrivons ainsi à la fin de cet article. J'espère que vous avez aimé le lire !