Polarys
Docker & conteneurs/Conteneurs et stockage

Conteneurs et stockage

Lancer et gérer des conteneurs

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 stop et docker rm : stop arrête le conteneur (il reste dans docker ps -a). rm le 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.

Quiz de validation

Quiz - 2 questions

1. Quelle commande ouvre un shell interactif dans un conteneur déjà en cours d'exécution ?

2. Que fait docker stop par rapport à docker rm ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.