Aller au contenu

Docker : les conteneurs

Un conteneur est une instance en cours d’exécution (ou arrêtée) d’une image. Les exemples utilisent des noms génériques (web, monapp).

Fenêtre de terminal
# En arrière-plan, nommé, avec un port publié
docker run -d --name web -p 8080:80 nginx:alpine
# Session interactive jetable (supprimée à la sortie)
docker run --rm -it alpine sh
# Variables d'environnement, volume et redémarrage automatique
docker run -d --name db \
-e POSTGRES_PASSWORD=secret \
-v pgdata:/var/lib/postgresql/data \
--restart unless-stopped \
postgres:16
Option Rôle
-d Exécute en arrière-plan
--name Nomme le conteneur
-p hôte:conteneur Publie un port (-p 127.0.0.1:8080:80 pour limiter à la machine locale)
-e VAR=valeur Définit une variable d’environnement
--env-file .env Charge des variables depuis un fichier
-v volume:/chemin Monte un volume ou un dossier de l’hôte
--rm Supprime le conteneur à son arrêt
-it Terminal interactif
--restart Politique de redémarrage (voir plus bas)
--network Rattache à un réseau
--user 1000:1000 Exécute avec un utilisateur non root
--read-only Système de fichiers en lecture seule

docker create crée le conteneur sans le démarrer (mêmes options).

Commande Rôle
docker ps Conteneurs en cours d’exécution
docker ps -a Tous les conteneurs, y compris arrêtés
docker stop web Arrête proprement (signal SIGTERM, puis SIGKILL après 10 s)
docker kill web Arrête immédiatement (SIGKILL)
docker start web Démarre un conteneur arrêté
docker restart web Redémarre
docker pause web / docker unpause web Suspend / reprend les processus
docker rename web site Renomme
docker rm web Supprime un conteneur arrêté (-f pour forcer)
docker wait web Attend l’arrêt et affiche le code de sortie
Fenêtre de terminal
docker logs web # logs complets
docker logs -f --tail 100 web # suivre les 100 dernières lignes
docker logs --since 10m web # logs des 10 dernières minutes
docker exec -it web sh # shell dans un conteneur en marche
docker exec web ls /etc # commande ponctuelle
docker attach web # se rattache au processus principal (Ctrl+p Ctrl+q pour quitter sans l'arrêter)
docker top web # processus du conteneur
docker stats web # CPU et mémoire en direct
docker inspect web # configuration détaillée (JSON)
docker diff web # fichiers modifiés par rapport à l'image
Fenêtre de terminal
docker cp web:/etc/nginx/nginx.conf ./nginx.conf # conteneur vers hôte
docker cp ./index.html web:/usr/share/nginx/html/ # hôte vers conteneur
Valeur Comportement
no Jamais (défaut)
on-failure[:max] Redémarre en cas de code de sortie non nul
always Toujours, y compris au démarrage du service Docker
unless-stopped Comme always, sauf si le conteneur a été arrêté manuellement

Modifier un conteneur existant : docker update --restart unless-stopped web.

Fenêtre de terminal
docker run -d --name api --memory 512m --cpus 1.5 monapp:1.0
docker update --memory 1g --memory-swap 1g api
Fenêtre de terminal
docker run -d --name web \
--health-cmd "wget -qO- http://localhost/ || exit 1" \
--health-interval 30s --health-retries 3 \
nginx:alpine
docker ps # la colonne STATUS affiche (healthy) ou (unhealthy)
Fenêtre de terminal
docker container prune # supprime tous les conteneurs arrêtés