Lancer et gérer des conteneurs
docker run est la commande la plus utilisée. Comprendre ses options permet de contrôler précisément le comportement des conteneurs.
Options essentielles de docker run
# Syntaxe complète
docker run [OPTIONS] IMAGE [COMMAND]
# -d : detach (arrière-plan)
docker run -d nginx
# -p : port mapping (hôte:conteneur)
docker run -d -p 8080:80 nginx # accès via localhost:8080
docker run -d -p 127.0.0.1:8080:80 nginx # limité à localhost
# --name : nommer le conteneur
docker run -d -p 8080:80 --name mon-nginx nginx
# -e : variables d'environnement
docker run -d -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=mydb mysql:8
# --rm : supprimer le conteneur à l'arrêt (pratique pour les tests)
docker run --rm -it ubuntu bash
# -it : interactif + TTY (pour entrer dans un shell)
docker run -it ubuntu bash
Gérer le cycle de vie
# Lister les conteneurs actifs
docker ps
# Lister tous les conteneurs (actifs + arrêtés)
docker ps -a
# Arrêter / démarrer / redémarrer
docker stop mon-nginx
docker start mon-nginx
docker restart mon-nginx
# Supprimer un conteneur arrêté
docker rm mon-nginx
# Supprimer un conteneur actif (force)
docker rm -f mon-nginx
# Nettoyer les conteneurs arrêtés
docker container prune
Interagir avec un conteneur en cours
# Ouvrir un shell dans un conteneur en cours
docker exec -it mon-nginx bash
# Exécuter une commande sans shell interactif
docker exec mon-nginx nginx -t # tester la config Nginx
# Lire les logs
docker logs mon-nginx
docker logs -f mon-nginx # suivi en temps réel (comme tail -f)
docker logs --tail 100 mon-nginx # 100 dernières lignes
# Inspecter le conteneur (IP, volumes, env, etc.)
docker inspect mon-nginx
docker inspect mon-nginx --format '{{.NetworkSettings.IPAddress}}'
Cas concret : conteneur de test rapide
# Tester une commande dans Ubuntu sans rien installer sur l'hôte
docker run --rm -it ubuntu:22.04 bash
# À l'intérieur :
apt-get update && apt-get install -y nmap
nmap -sV localhost
exit # le conteneur disparaît proprement grâce à --rm
# Tester une version spécifique de Python
docker run --rm python:3.12 python -c "import sys; print(sys.version)"
Erreurs fréquentes
- Oublier
-d: sans detach, le terminal est bloqué par le processus du conteneur. Ctrl+C arrête le conteneur. - Confondre
docker stopetdocker rm:stoparrête le conteneur (il reste dansdocker ps -a).rmle supprime définitivement. - Port déjà utilisé :
Bind for 0.0.0.0:8080 failed: port is already allocated→ un autre service utilise ce port hôte.
À retenir
-d -p hôte:conteneur --name→ le trio de base pour un conteneur production.docker exec -it conteneur bash→ entrer dans un conteneur en cours.docker logs -f→ suivre les logs en temps réel.--rm→ conteneur éphémère pour les tests.