Dans l’équipe décrite, environ 90 % du travail d’infrastructure est industrialisé et automatisé pour gérer 160 établissements scolaires et une quarantaine de collectivités avec une équipe d’une quinzaine de personnes.
Terraform et Ansible sont des outils d’IaC, tandis que l’équipe décrite utilise SaltStack pour gérer son infrastructure hébergée en interne.
L’infrastructure décrite héberge ses données en interne pour maîtriser le matériel, les données, les services et l’accès physique, notamment par souci de souveraineté.
📌 Pour un service en production, Docker seul n’est pas considéré comme suffisant pour assurer la stabilité ; il est accompagné d’autres outils.
Une recette IaC reproduit la même brique sur chaque site.
★ À maîtriser
Un conteneur est une instance d’image, et plusieurs conteneurs peuvent être créés à partir de la même image.
Pour construire une image, on part d’une image existante et on décrit dans un Dockerfile les logiciels et les fichiers à ajouter, au moyen de commandes telles que RUN.
Compléments
Une architecture web peut séparer le front-end et le back-end dans deux conteneurs indépendants reliés entre eux.
Une modification effectuée dans un conteneur est perdue à sa suppression si elle n’est ni intégrée au Dockerfile et à l’image, ni stockée dans un volume.
L’image est le modèle immuable ; le conteneur en est l’instance jetable.
★ À maîtriser
📌 Une machine virtuelle embarque un système d’exploitation avec son propre noyau, tandis qu’un conteneur partage le noyau de son hôte.
Une VM pèse généralement plusieurs gigaoctets à plusieurs dizaines de gigaoctets, tandis qu’un conteneur pèse généralement quelques centaines de mégaoctets ou moins.
La virtualisation complète offre une isolation plus forte que la conteneurisation, car une VM n’a pas de lien direct avec le système hôte, tandis que les conteneurs partagent son noyau.
Compléments
Une VM complète de GLPI est décrite comme nécessitant environ 8 à 9 Go de disque, 3 à 4 Go de RAM et un ou deux vCPU.
Un conteneur LXC sous Proxmox peut être démarré en environ cinq secondes à partir d’un template Debian 13.
Les conteneurs sont isolés par des mécanismes du noyau Linux, notamment les cgroups, et les capabilities contrôlent l’accès des applications à certaines fonctions du noyau.
VM : noyau dédié et isolation forte ; conteneur : noyau partagé et légèreté.
★ À maîtriser
📌 Sur Docker Hub, il est recommandé de privilégier les images officielles publiées par l’éditeur du logiciel, car les images disponibles ont des qualités variables.
📌 Une image n’est pas plus sûre que son image de base ; une base vulnérable doit être reconstruite, corrigée et maintenue.
Compléments
Les tags distinguent les variantes d’une image, par exemple les versions basées sur Debian ou Alpine et celles incluant des composants supplémentaires.
L’image Alpine de base pèse environ 3,7 Mo, l’image Debian 13 environ 47 Mo, et l’image Apache officielle environ 46 Mo.
Les images renforcées couvrent notamment les langages et outils suivants :
Le README d’une image explique comment l’utiliser et peut fournir des fichiers de configuration ou des commandes de lancement.
★ À maîtriser
📌 Le principe de conception Docker présenté est de faire correspondre un conteneur à un service, puis d’utiliser Docker Compose pour démarrer ensemble les services d’une application.
Compléments
Une application web peut être découpée en conteneurs front-end, back-end et base de données, avec souvent un cache comme Redis.
Dans l’exemple de montée en charge, Kubernetes remplace progressivement cinq conteneurs dédiés au paiement, en faisant évoluer la répartition entre ancienne et nouvelle version jusqu’à ce que les cinq utilisent la nouvelle version.
Dans l’exemple donné, une image front-end passant d’un conteneur à dix peut multiplier par dix la capacité en une quinzaine de secondes, dans la limite des ressources disponibles.
📌 Docker Compose permet le scale, mais celui-ci est difficilement automatisable, tandis que Kubernetes peut ajouter ou supprimer automatiquement des instances selon des métriques.
Images légères → démarrage rapide → montée en charge accélérée.
★ À maîtriser
L’installation de Docker sur Debian suit la documentation officielle depuis le dépôt APT, après installation de sudo, puis installe Docker CE, sa CLI, containerd, Buildx et le plugin Compose.
L’ajout d’un utilisateur au groupe docker permet d’utiliser Docker sans être root, mais ce groupe confère des droits équivalents à root sur la machine.
Compléments
Pour la VM Debian 13 de travail, les recommandations sont de disposer de 4 à 8 Go de RAM, de 2 à 4 vCPU et d’au moins 64 Go de disque.
Sur Debian, la connexion SSH directe en root avec un mot de passe est interdite par défaut ; on se connecte avec un utilisateur simple puis on passe root avec su -.
📌 La commande su - charge l’environnement de root, notamment son répertoire personnel et son PATH, tandis que su seul conserve l’environnement de l’utilisateur simple.
Préparer Debian, installer Docker, vérifier le démon, lancer hello-world.
★ À maîtriser
📌 docker ps affiche les conteneurs en cours d’exécution, tandis que docker ps -a affiche aussi les conteneurs arrêtés.
Compléments
Sous Linux, le code de sortie 0 indique qu’un programme s’est arrêté normalement, tandis qu’une autre valeur signale une erreur.
docker run -it ubuntu bash lance un shell interactif dans un conteneur Ubuntu, et quitter ce shell arrête le conteneur.
📌 Un outil nécessaire au service doit être prévu dans l’image plutôt qu’installé manuellement dans le conteneur en cours d’exécution.
Le processus s’arrête → le conteneur s’arrête.
★ À maîtriser
Compléments
docker ps est un alias de docker container ls ou de docker container ps, et les anciennes formes sont conservées pour la compatibilité.
docker ps -n 3 affiche les trois derniers conteneurs créés, --no-trunc affiche les identifiants complets et --size indique l’espace disque par conteneur.
Les filtres docker ps -f peuvent cibler notamment l’identifiant, le nom, l’état ou des labels tels que env=prod.
Les labels permettent de classer les conteneurs, par exemple avec env=dev, env=prod ou client=clientA, puis de les retrouver à l’aide de filtres.
★ À maîtriser
📌 Sans tag explicite, Docker utilise implicitement latest ; fixer un tag tel que httpd:2.4 évite de basculer automatiquement vers une nouvelle version potentiellement incompatible.
Compléments
📌 Un conteneur en cours d’exécution doit être arrêté avant d’être supprimé avec docker rm, sauf si la suppression forcée docker rm -f est utilisée.
L’option --name sert à nommer un conteneur et doit être placée avant le nom de l’image dans docker run.
Les options courtes -itd regroupent les options -i, -t et -d pour lancer un conteneur interactif, avec terminal et détaché.
latest suit la dernière version ; un tag fixé maîtrise la version utilisée.
★ À maîtriser
Docker crée l’interface docker0 et un réseau bridge par défaut dans le sous-réseau 172.17.0.0/16, avec des règles de NAT et de redirection gérées automatiquement.
Sans publication de port, un service dans un conteneur n’est pas accessible depuis les autres équipements du réseau, même si l’hôte peut le joindre par son adresse IP interne.
📌 docker run -p 80 publie le port 80 du conteneur sur un port aléatoire de l’hôte, tandis que -p 80:80 associe le port 80 de l’hôte au port 80 du conteneur.
Compléments
📌 Un même port de l’hôte ne peut être attribué qu’une fois ; plusieurs conteneurs peuvent toutefois utiliser le même port interne si leurs ports hôte sont différents.
★ À maîtriser
📌 Exécuter docker pull avant docker run télécharge l’image à l’avance et évite d’attendre son téléchargement au moment du lancement.
📌 Les données non conservées dans un volume sont perdues lors du remplacement du conteneur par une nouvelle version.
Compléments
docker image ls liste les images locales et docker rmi supprime une image qui n’est utilisée par aucun conteneur.
docker stats affiche en temps réel la consommation des conteneurs.
Télécharger la nouvelle image, supprimer l’ancien conteneur, lancer le nouveau.
★ À maîtriser
📌 Tous les conteneurs rattachés au réseau bridge par défaut peuvent communiquer entre eux.
Compléments
Docker attribue un sous-réseau à chaque réseau créé ; dans l’exemple, clientA reçoit 172.18.0.0/16 et clientB reçoit 172.19.0.0/16.
Dans un réseau Docker créé avec docker network create, le DNS intégré permet aux conteneurs du réseau de se joindre par leur nom, tandis que l’option --link est obsolète.
📌 Un réseau Docker crée un réseau isolé de niveau 3, tandis qu’un VLAN 802.1Q marque les trames réseau avec un tag.
Même réseau : communication possible ; réseaux séparés : conteneurs isolés.
Machine virtuelle et conteneur
| Dimension | Machine virtuelle | Conteneur |
|---|---|---|
| Noyau | Système d’exploitation avec noyau dédié | Noyau partagé avec l’hôte |
| Poids | Plusieurs Go à plusieurs dizaines de Go | Quelques Mo à quelques centaines de Mo |
| Démarrage | Installation ou démarrage complet | Quelques secondes ou moins |
| Isolation | Très forte | Bonne, mais dépend du noyau |
Teste tes connaissances sur Docker et conteneurisation avec 29 questions à choix multiples et corrections détaillées.
1. Quel est le principe de l’Infrastructure as Code (IaC) ?
2. Pourquoi héberger les données en interne peut-il contribuer à la souveraineté d’une infrastructure ?
Mémorisez les concepts clés de Docker et conteneurisation avec 94 flashcards interactives.
Que décrit l’Infrastructure as Code (IaC) dans des fichiers ou des recettes ?
Le fonctionnement d’une infrastructure afin de pouvoir la reproduire automatiquement.
Qu’est-ce qu’un conteneur informatique ?
Une enveloppe virtuelle qui distribue une application et ses composants.
À quoi sert une image Docker ?
À servir de référence immuable pour créer des conteneurs.
Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.
Générateur de fiches