⚡ Les trois mots
| C'est | Persistant ? | |
|---|---|---|
| Image | un modèle figé, en lecture seule | oui |
| Conteneur | une exécution de l'image | non |
| Volume | un stockage hors conteneur | oui |
« L'image est le modèle, le conteneur est l'exécution, le volume est la mémoire. »
Les trois mots, les commandes, et les deux lectures à ne jamais inverser. Le cours · Le TP corrigé
| C'est | Persistant ? | |
|---|---|---|
| Image | un modèle figé, en lecture seule | oui |
| Conteneur | une exécution de l'image | non |
| Volume | un stockage hors conteneur | oui |
« L'image est le modèle, le conteneur est l'exécution, le volume est la mémoire. »
Une VM embarque un système entier et son noyau : plusieurs Go, dizaines de secondes.
Un conteneur partage le noyau de l'hôte : quelques dizaines de Mo, moins d'une seconde.
VM Debian installée : plusieurs Go · image debian :
une centaine de Mo · image alpine : moins de 10.
-p 8080:80 hote : conteneur
-v donnees:/usr/share/nginx/html volume : point de montageLe dehors est toujours à gauche. C'est la seule chose à retenir, et elle évite les deux erreurs les plus fréquentes du TP.
docker pull nginx telecharger
docker pull nginx:1.21 une version precise
docker images lister
docker rmi nginx:1.21 supprimerLe tag fait partie de l'identité. nginx et
nginx:1.21 sont deux images, deux IMAGE ID.
latest = « par défaut », pas « la plus récente ».
docker run -it alpine sh interactif
docker run -d --name web nginx detache, nomme
docker ps / docker ps -a actifs / TOUS
docker logs web / docker logs -f
docker exec -it web bash entrer DANS
docker stop / start / restart web
docker rm web / docker rm -f webrun crée, exec entre.
Un conteneur vit tant que son processus principal vit.
Alpine n'a pas bash, seulement sh.
docker volume create donnees-web
docker run -d -p 8082:80 \
-v donnees-web:/usr/share/nginx/html nginx
docker volume ls / inspect / rmLe volume survit à docker rm. C'est la seule façon de
garder des données.
Monté sur un dossier non vide, il le masque entièrement — sauf au tout premier montage, où son contenu y est recopié.
docker system df ce que ca occupe
docker container prune conteneurs arretes
docker image prune -a images inutilisees
docker volume prune volumes orphelins
docker system prune les troisdocker system prune -a --volumes efface aussi les
données. Regarder df d'abord.
docker ps cache les conteneurs arrêtés.run au lieu de exec → on modifie un autre conteneur.bash n'existe pas dans Alpine.stop/start garde les modifications, rm les efface.rm refuse un conteneur actif ; rmi refuse une image
utilisée ; volume rm refuse un volume monté.$(docker ps -q) échoue si la liste est vide.macOS · Windows — Docker Desktop. Sous Windows, wsl --install
d'abord, et la virtualisation activée dans le BIOS.
Linux — le dépôt officiel, jamais apt install docker.io.
Puis sudo usermod -aG docker $USER, et rouvrir la session.
Vérifier — docker info, pas docker --version :
seul le premier prouve que le moteur répond.
Le groupe docker équivaut à root.
Sur le réseau par défaut, les noms ne résolvent pas —
ping c2 rend bad address — et les adresses bougent :
redémarrés dans l'autre ordre, deux conteneurs échangent la leur.
Un réseau qu'on crée soi-même règle les deux : Docker y active son
résolveur interne, 127.0.0.11, et le nom devient l'identité stable.
--ip n'existe que sur un réseau personnalisé. Le réseau
par défaut la refuse, quelle que soit l'adresse.
Deux réseaux ne se parlent pas, et un conteneur à deux pattes ne les relie pas : parler n'est pas router — il faut le transfert de paquets, une route aller ET une route retour.
-p ne sert jamais entre conteneurs, seulement à percer la
frontière depuis la machine. Et 0.0.0.0:8080 veut dire « toutes les
interfaces », Wi-Fi compris.
docker network ls · docker network inspect <réseau>
docker network create --subnet <CIDR> --gateway <IP> <nom>
docker run --network <nom> --ip <IP> …
docker network connect <réseau> <conteneur> ·
disconnect pour l'inverse
docker port <conteneur> — ce qui est réellement publié, et sur quelle
interface
Nettoyage : les conteneurs d'abord, les réseaux ensuite — sinon
has active endpoints.
1 le moteur répond · une image ne se télécharge qu'une fois.
2 pull, images, rmi · le tag fait l'identité.
3 ps vs ps -a · inspect ·
exec · stop/start garde.
4 -p · deux fois le port 80, un seul 8080.
5 le volume survit au conteneur.
6 nettoyer · image, conteneur, volume.
TP 2, le réseau — 7 les trois réseaux ·
8 le bridge par défaut : pas de noms, adresses instables ·
9 réseau personnalisé et 127.0.0.11 ·
10 l'adresse fixe et ses deux refus ·
11 isolation, et la passerelle qui ne route pas ·
12 -p perce la frontière, pas le réseau ·
13 l'ordre du nettoyage.