DOCKER - 4 8 Extension d image officielle
Les images Docker sont construites en couches. Chaque Dockerfile commence par une instruction FROM qui hérité d'une image existante. Par exemple, FROM nginx crée une nouvelle image basée sur l'image officielle Nginx. En héritant d'une image, vous récupérez tout ce qu'elle contient : les fichiers, les dépendances, les configurations et les commandes par défaut. Vous pouvez ensuite ajouter vos propres couches au-dessus pour la personnaliser.
Directives principales : WORKDIR et COPY
L'instruction WORKDIR change le répertoire de travail à l'intérieur du conteneur (equivalent à cd). C'est la meilleure pratique pour modifier des répertoires dans un Dockerfile, plutôt que d'utiliser RUN cd. Par exemple, WORKDIR /usr/share/nginx/html vous place dans le répertoire par défaut où Nginx sert ses fichiers.
COPY permet de copier des fichiers ou des répertoires depuis votre machine locale vers l'image en construction. Exemple : COPY index.html . copie votre fichier HTML local dans le répertoire courant du conteneur. Cela permet de remplacer les fichiers par défaut par vos propres fichiers.
Héritage et construction
Lorsque vous construisez votre image avec docker build, Docker récupère d'abord l'image de base depuis son cache (ou la télécharge si nécessaire), puis exécute chaque instruction du Dockerfile pour ajouter des couches. Si vous ne spécifiez pas d'instruction CMD ou ENTRYPOINT, le conteneur utilisera celui de l'image parent. Cette approche en couches permet de réutiliser des images existantes, d'accélérer la construction, et de maintenir plus facilement vos Dockerfiles.
En résumé
Cette leçon explique comment utiliser et personnaliser les images officielles Docker, en particulier Nginx. Elle détaille les strophes essentielles du Dockerfile (FROM, WORKDIR, COPY) et montre comment hériter de la configuration d'une image de base pour créer une image personnalisée. La démonstration pratique illustre comment étendre une image officielle en copiant du code source et en gérant les répertoires lors de la construction.
Points clés
- Les images officielles Docker Hub sont idéales pour maintenir les Dockerfiles car elles sont pré-configurées et testées
- La strophe FROM hérite automatiquement de toutes les configurations de l'image source (CMD, ports, etc.)
- WORKDIR est la meilleure pratique pour changer de répertoire lors du build (plus lisible qu'un RUN cd)
- COPY permet de transférer le code source de la machine locale vers le conteneur lors de la construction
- On peut chaîner les Dockerfiles de sorte que les images dépendent d'autres images qui elles-mêmes dépendent d'autres images
- Le tagging avec `docker tag` au format `username/nom:version` prépare l'image à être poussée sur Docker Hub
Questions fréquentes
Pourquoi utiliser une image officielle Docker plutôt que de construire à partir de zéro ?
Les images officielles sont beaucoup plus faciles à gérer et maintenir, elles sont déjà configurées pour leur usage spécifique et testées. À mesure que votre environnement se complexifie, vous pouvez simplement ajouter des logiciels personnalisés sur cette base solide.
Quelle est la différence entre utiliser RUN cd et WORKDIR ?
WORKDIR est la meilleure pratique car elle rend le Dockerfile plus lisible et descriptif. Bien qu'on soit tenté d'utiliser RUN cd, WORKDIR est spécifiquement conçu pour les changements de répertoire et facilite la maintenance des Dockerfiles complexes.
Comment tagguer et pousser une image personnalisée vers Docker Hub ?
Utilisez d'abord `docker tag` avec le format `username/nom:version` pour nommer correctement votre image, puis exécutez `docker push username/nom:version`. Les deux images partagent le même identifiant jusqu'à ce que vous les taguiez différemment.