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.
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
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
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.