Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 3 · Dockerfile

Construire des images avec un Dockerfile

Le Dockerfile est une recette automatisée de création d'image, dans un format propre à Docker. On la déroule avec docker build.

docker build -f <chemin du Dockerfile> <chemin du contexte de build>

Option --tag pour taguer l'image dans la foulée. Le contexte de build est le répertoire dont les fichiers sont disponibles pour COPY. Pour chaque instruction, Docker lance un conteneur intermédiaire et en fige le résultat dans une couche, à partir de l'image de base prise sur le registry.

Exemple du cours :

FROM debian
RUN apt-get update
RUN apt-get install -y nginx
COPY nginx.conf /etc/nginx/conf/nginx.conf

Lecture : partir de l'image debian, mettre à jour l'index des paquets, installer nginx sans interaction (-y), copier le nginx.conf du contexte vers l'image. Quatre instructions donc quatre couches.

Vérifie que tu as compris

Pourquoi apt-get install -y nginx dans un RUN ?

Les instructions principales

InstructionRôle (d'après le cours)
FROM <image>image de base ; un seul FROM par Dockerfile (dans le cours)
RUN <commande>exécute une commande shell (lancée par sh), sans interaction
LABEL version="1.0"applique un label, utile avec docker images --filter
ENV key=valuevariable d'environnement valable au build et à l'exécution des conteneurs
COPY src destcopie un fichier / répertoire du contexte vers l'image ; --chown pour les droits
ADD src destcomme COPY, plus : une archive est décompressée, la source peut être une URL
WORKDIR dirchange le répertoire courant, base des RUN suivants
EXPOSE 80/tcpindique le port d'écoute du processus ; métadonnée, sans effet direct sur le réseau
VOLUME chemindéclare un volume externe, résolu au run ; les fichiers existants sont ajoutés au volume monté
USER user:groupdéfinit uid et gid dans le conteneur ; attention aux volumes partagés avec l'hôte
ENTRYPOINT [...]commande de démarrage ; elle obtient le PID 1 et reçoit les signaux (ex. SIGTERM) ; par défaut /bin/sh -c
CMD [...]arguments par défaut passés à l'ENTRYPOINT

Vérifie que tu as compris

Que fait EXPOSE 80/tcp ?

Vérifie que tu as compris

Pour décompresser automatiquement une archive dans l'image, on utilise…

Exemple de lecture avec ENTRYPOINT / CMD (exemple ajouté, formes tirées du cours) :

FROM debian
RUN apt-get update && apt-get install -y apache2
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

Au démarrage, le processus apache2ctl devient PID 1 et reçoit SIGTERM à l'arrêt ; -D FOREGROUND le garde au premier plan, sinon le conteneur s'arrêterait.