Réduire la taille des images avec des bases Slim et Distroless
Réduisez la taille des images finales en choisissant des images de base minimales, en supprimant les outils de construction et en utilisant des bases distroless ou scratch pour accélérer les téléchargements et réduire la surface d’attaque.
Réduire la taille des images avec des bases Slim et Distroless est une leçon Docker & DevOps Fundamentals gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Docker & DevOps Fundamentals, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.
Pourquoi la taille des images est importante
Les images plus petites se téléchargent plus vite, démarrent plus rapidement, coûtent moins cher à stocker et exposent moins de paquets aux attaquants. Optimiser leur taille améliore à la fois les performances et la sécurité.
Choisir une image de base légère
Les images par défaut sont pratiques, mais volumineuses. Remplacer node:20 (environ 1 Go) par node:20-slim ou node:20-alpine peut réduire instantanément la taille de plusieurs centaines de mégaoctets.
FROM node:20-slimCompromis liés à Alpine
Alpine est très légère, mais utilise musl libc au lieu de glibc, ce qui peut parfois empêcher le fonctionnement de binaires natifs. Testez soigneusement ; parfois, -slim constitue l’option légère la plus sûre.
FROM python:3.12-alpineCombiner les couches RUN
Chaque RUN ajoute une couche. Enchaînez les commandes associées et effectuez le nettoyage dans la même couche, sinon les fichiers supprimés continueront d’alourdir la couche précédente.
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*Utiliser .dockerignore
Un fichier .dockerignore exclut les éléments inutiles du contexte de construction : node_modules, .git et les journaux. Un contexte réduit signifie des constructions plus rapides et des couches plus petites.
# .dockerignore
.git
node_modules
*.logRécapitulatif des constructions en plusieurs étapes
Construisez dans une première étape avec tous les compilateurs, puis utilisez COPY --from pour ne copier que l’artefact dans une étape finale propre. La chaîne d’outils n’est jamais distribuée.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app
FROM alpine:3.20
COPY --from=build /src/app /appDécouvrez Distroless
Les images Distroless contiennent uniquement votre application et son environnement d’exécution — aucun shell, aucun gestionnaire de paquets et aucun binaire supplémentaire. Elles sont très petites et difficiles à exploiter.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Pas de shell, pas de problème
Distroless ne contient aucun shell : les commandes RUN et docker exec sh ne fonctionneront donc pas. Effectuez toute la configuration dans les étapes précédentes ; utilisez l’étiquette :debug lorsque vous devez inspecter l’image.
La base scratch
Pour les binaires entièrement statiques (Go, Rust), FROM scratch ne fournit rien d’autre que votre exécutable — souvent quelques mégaoctets au total.
FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Mesurer vos gains
Utilisez docker images pour comparer les tailles et docker history pour voir quelles couches sont les plus volumineuses. Optimisez d’abord les couches les plus lourdes.
docker history myapp:latestÉpingler les versions, pas latest
Épingler une étiquette ou un condensat précis rend les constructions reproductibles et évite les augmentations de taille inattendues lorsqu’un latest en amont est modifié.
FROM node:20.11.1-slimVérification rapide
Quelle est la particularité d’une image distroless ?
Récapitulatif
Vous pouvez maintenant réduire fortement la taille des images :
- Choisissez des bases
-slim,-alpine, distroless ouscratch - Enchaînez et nettoyez les couches
RUN; utilisez.dockerignore - Les constructions en plusieurs étapes excluent la chaîne d’outils
- Mesurez avec
docker historyet épinglez les versions
Des images plus petites permettent des déploiements plus rapides et plus sûrs.
Questions Fréquemment Posées
La leçon « Réduire la taille des images avec des bases Slim et Distroless » est-elle gratuite ?
Oui — le texte complet de « Réduire la taille des images avec des bases Slim et Distroless » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Docker & DevOps Fundamentals, passe à CoddyKit PRO. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Réduire la taille des images avec des bases Slim et Distroless » ?
Réduisez la taille des images finales en choisissant des images de base minimales, en supprimant les outils de construction et en utilisant des bases distroless ou scratch pour accélérer les téléchar… Tu pratiques Docker & DevOps Fundamentals avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Docker & DevOps Fundamentals ?
Aucune expérience préalable n'est requise. Docker & DevOps Fundamentals sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Réduire la taille des images avec des bases Slim et Distroless » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Docker & DevOps Fundamentals ?
Oui. Chaque leçon Docker & DevOps Fundamentals inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Constructions en plusieurs étapes pour gagner en efficacité
- Tirer parti de la mise en cache des constructions
- Bonnes pratiques de sécurité des Dockerfiles
- Réduire la taille des images avec des bases Slim et Distroless