0 XP
?
Débutant45 min30 XP

Objectifs de cette leçon

  • Créer et gérer des conteneurs
  • Exécuter des commandes dans un conteneur
  • Comprendre le cycle de vie d'un conteneur

Conteneurs Docker 📦

Cycle de vie d'un conteneur

┌─────────────┐     docker run     ┌──────────────┐
│             │ ──────────────────→ │              │
│   Image     │                     │  Conteneur   │
│  (statique) │ ←────────────────── │  (actif)     │
│             │     docker rm       │              │
└─────────────┘                     └──────┬───────┘
                                           │
                                    docker stop
                                           │
                                           ↓
                                    ┌──────────────┐
                                    │  Arrêté      │
                                    │  (stopped)   │
                                    └──────┬───────┘
                                           │
                                    docker rm
                                           │
                                           ↓
                                    ┌──────────────┐
                                    │  Supprimé    │
                                    │  (removed)   │
                                    └──────────────┘

Les états d'un conteneur

ÉtatDescriptionCommande
CreatedCréé mais jamais lancédocker create
RunningEn cours d'exécutiondocker run
PausedSuspendu (processus gelés)docker pause
RestartingEn train de redémarrerdocker restart
ExitedArrêté normalement ou en erreurdocker stop
DeadDans un état erronédocker rm -f

Créer et gérer un conteneur

# Créer un conteneur sans le lancer
docker create --name mon-web nginx:alpine

# Lancer le conteneur
docker start mon-web

# Lancer avec un terminal interactif
docker run -it --name mon-terminal ubuntu bash

# Voir les conteneurs actifs
docker ps

# Voir TOUS les conteneurs
docker ps -a

# Arrêter (grâce → force après 10s)
docker stop mon-web

# Forcer l'arrêt immédiat
docker kill mon-web

# Redémarrer
docker restart mon-web

# Supprimer un conteneur arrêté
docker rm mon-web

# Forcer la suppression (même si en cours)
docker rm -f mon-web

Interaction avec un conteneur

Exécuter une commande dans un conteneur actif

# Exécuter une commande unique
docker exec mon-web cat /etc/nginx/nginx.conf

# Ouvrir un terminal dans le conteneur
docker exec -it mon-web bash

# Utilisateur nginx dans le conteneur
docker exec -it -u www-data mon-web sh

Copier des fichiers

# Copier DEPUIS le conteneur vers l'hôte
docker cp mon-web:/etc/nginx/nginx.conf ./nginx.conf

# Copier DEPUIS l'hôte vers le conteneur
docker cp ./config.json mon-web:/app/config.json

Les ports

# Mapper le port 8080 de l'hôte vers le port 80 du conteneur
docker run -d -p 8080:80 nginx

# Mapper plusieurs ports
docker run -d -p 3000:3000 -p 8080:80 mon-app

# Mapper sur toutes les interfaces
docker run -d -p 0.0.0.0:8080:80 nginx

# Exposer le port sans le mapper
docker run -d --expose 3000 mon-app

Format : -p <hôte>:<conteneur> ou -p <hôte>:<conteneur>/<protocol>


Les variables d'environnement

# Une variable
docker run -e NODE_ENV=production mon-app

# Plusieurs variables
docker run -e DB_HOST=mysql -e DB_PORT=3306 mon-app

# Depuis un fichier .env
docker run --env-file .env mon-app

# Voir les variables dans le conteneur
docker exec mon-app env

Les logs

# Voir les logs en temps réel
docker logs mon-app

# Suivre les logs en continu
docker logs -f mon-app

# Voir les 50 dernières lignes
docker logs --tail 50 mon-app

# Voir les logs avec timestamps
docker logs -t mon-app

Resource limits

# Limiter la mémoire à 512 Mo
docker run -d --memory=512m mon-app

# Limiter le CPU à 1 cœur
docker run -d --cpus=1.0 mon-app

# Limiter les CPU (2 cœurs sur 4)
docker run -d --cpus=2 mon-app

# Voir l'usage en temps réel
docker stats mon-app

Résumé des commandes

CommandeDescription
docker runCréer + démarrer
docker createCréer sans démarrer
docker startDémarrer un conteneur créé
docker stopArrêter gracieusement
docker killArrêter forcé
docker restartRedémarrer
docker pauseSuspendre
docker unpauseReprendre
docker rmSupprimer
docker execExécuter dans le conteneur
docker logsVoir les logs
docker statsVoir les ressources

Exercices 🎯

  1. Cycle de vie : Créez un conteneur, lancez-le, arrêtez-le, redémarrez-le, supprimez-le.
  2. Ports : Lancez nginx sur le port 3000 et accédez-y via curl.
  3. Environnement : Passez une variable d'environnement et vérifiez-la avec docker exec.
  4. Logs : Lancez un conteneur et observez ses logs en temps réel.

Prochaine leçon : Les volumes et la persistance des données.

Cycle de vie d'un conteneur
Cliquez sur une étape
📦Créé
$ docker create nginx

L'image est chargée, le conteneur est prêt mais pas encore lancé.

Commande à retenir
docker create nginx
1/5