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 5 · Images

Images, conteneurs, couches et registry

L'analogie du cours, issue de la programmation objet : image = classe, conteneur = instance. Une image est construite une seule fois ; on peut créer N conteneurs avec une image.

Une image est un empilement de couches (layers) ; une image peut servir de base à une autre ; les données communes ne sont pas dupliquées. Exemple du cours : Wildfly et Spring Boot reposent chacun sur Java, lui-même sur un OS de base Ubuntu, couches partagées. Chaque commande de Dockerfile (FROM, COPY, RUN) produit une couche.

couche en écriture (propre au conteneur)
couche 3 (lecture seule)
couche 2 (lecture seule)
couche 1 : OS de base (lecture seule)

Un conteneur reçoit toutes les couches de son image en lecture seule, plus une couche supplémentaire en écriture, propre à lui.

Vérifie que tu as compris

Quand un conteneur modifie un fichier venant de l'image, que se passe-t-il ?

Copy on Write

Si plusieurs entités ont besoin de la même ressource, plutôt que de leur en donner une copie, on leur donne un pointeur vers celle-ci. Les fichiers ne sont copiés qu'au moment où une modification doit être faite. Cela réduit l'usage disque et le temps de création. Options citées : device mapper (niveau fichiers), btrfs / zfs (niveau système de fichiers), aufs / overlay (niveau fichiers).

Conséquences : économie de place, démarrage très rapide (seule la couche supérieure est créée), un conteneur qui écrit beaucoup prend plus de place qu'un conteneur en lecture seule, et les données sont supprimées en même temps que le conteneur.

Vérifie que tu as compris

Pourquoi un conteneur démarre-t-il très rapidement ?

Registry, Docker Hub, orchestrateurs

Le Docker Hub est le registry public officiel. Il existe des registries d'entreprise : le Docker Trusted Registry ajoute intégration d'entreprise (AD...), signature et certification des images, RBAC avancé, garbage collector, scans de sécurité.

Les volumes (stockage externe) et les réseaux (ports) permettent de relier un conteneur au monde : exemple du cours, un conteneur Apache dont le port 80 est publié sur le port 8081 de l'hôte, avec des dossiers /config, /log, /data liés à l'hôte. Détails en partie 2.

Les orchestrateurs gèrent un ensemble de machines : haute disponibilité et élasticité, gestion unifiée d'un grand volume de conteneurs, mutualisation des ressources. Un nœud master répartit les conteneurs sur des nœuds. Voir partie 3.