Docker : la recette et le gâteau (image vs conteneur)
Imagine une recette de gateau et le gateau lui-meme. La recette, tu la ranges. Le gateau, tu le manges. Avec Docker, c'est la meme idee.
L'image, c'est la recette figee. Le conteneur, c'est le gateau en train de tourner. Si tu melanges les deux, tout devient flou. On pose ca clairement ici.
Image vs conteneur : la metaphore simple
Docker, c'est une usine a petites boites. Chaque boite fait tourner un programme (ton site, ton API, ta base).
- Une image Docker, c'est le plan de la boite.
- Dedans : fichiers, programmes, reglages de base.
- Elle ne tourne pas. Elle ne mange pas de memoire.
- Tu la partages via un registre (un grand garage a images).
- Un conteneur, c'est une boite vivante creee a partir de ce plan.
- Elle a sa propre memoire, son reseau, sa vie.
- Tu peux en lancer plusieurs avec la meme image.
- Tu peux l'arreter, la supprimer, en recreer une autre.
En pratique :
# Telecharge une image officielle
docker pull nginx:1.27
# Lance un conteneur nomme "web"
docker run --name web -p 8080:80 nginx:1.27
Ici, nginx:1.27 est l'image. web est le conteneur qui tourne.
Ou vivent tes images ?
Une image vit dans un registre - un entrepot :
- Docker Hub : le garage public. Pratique pour commencer.
- GitHub Container Registry (
ghcr.io) : utile si ton code est sur GitHub. - Registry prive : pour tes images internes, la prod, tes clients.
Notation classique :
<registry>/<namespace>/<image>:<tag>
Exemples :
nginx:1.27= raccourci pourdocker.io/library/nginx:1.27ghcr.io/likedevgit/dispycluster:latestregistry.interne.local/clients/mon-projet-api:2.3.1
Le tag (apres le :), c'est l'etiquette sur la boite. Evite de ne travailler qu'avec latest. C'est comme ecrire "derniere version" sans date.
La vie d'un conteneur
Quelques commandes couvrent 80 % du quotidien :
# Lister les conteneurs en cours
docker ps
# Lister tous (meme stoppes)
docker ps -a
# Stopper
docker stop web
# Relancer
docker start web
# Supprimer
docker rm web
Deux règles d'or :
- Le conteneur est jetable. Tu dois pouvoir le jeter et le recreer sans panique.
- Les donnees importantes ne vivent pas dans la boite. Elles vont dans un volume, une base externe, un bucket. On detaille ca dans Docker volumes et reseaux.
Regarder dans une image
Avant de faire confiance a une image, regarde ce qu'elle contient :
docker image ls
docker history nginx:1.27
docker inspect nginx:1.27
Tu verifies :
- la taille (grosse image = build et deploiement plus lents),
- l'OS de base (Alpine, Debian, Ubuntu...),
- les ports ouverts,
- la commande de demarrage.
Bons reflexes
- Toujours taguer :
1.0.0,2026-02-21,prod. Pas seulementlatest. - Une image = un role. Pas de boite magique API + worker + cron. Un service, une image, un conteneur.
- Pas de secrets dans l'image. Mots de passe et cles passent par des variables d'environnement ou des fichiers montes.
Pour la suite
Ensuite dans la serie :
- Installer Docker proprement sur ta machine.
- Volumes et reseaux pour faire discuter les boites.
- Docker Compose pour tout lancer d'un coup.
- Optimiser tes images.
- Preparer la prod : registry, tags, securite.
L'objectif : etre a l'aise avec Docker en solo, avant de passer a des usines plus grosses.