← Retour au portail

Fiche 7 - Docker — Installation et commandes essentielles

Installer Docker sur Debian, comprendre les concepts (image, conteneur, volume), et maîtriser les commandes de base.

Intermédiaire — SISR 2ème année ⏱️ 25 min 📁 Virtualisation

🎯 Objectifs de la fiche

  1. Concepts Docker — Image, conteneur, volume, registry
  2. Installation sur Debian 13 — Dépôt officiel Docker, post-installation
  3. Commandes essentielles — run, ps, stop, rm, logs, exec
  4. Gestion des images — pull, build, tag, push, rmi
  5. Volumes et réseaux — Persistance des données, réseau Docker

Prérequis

Debian 13 avec accès root ou sudo. Connaître les bases de Linux (commandes, services). Notions de virtualisation.

1. Concepts clés Docker

ConceptDéfinitionAnalogie
ImageModèle en lecture seule d'un conteneur (OS + application)Recette de cuisine
ConteneurInstance en cours d'exécution d'une imagePlat cuisiné à partir de la recette
DockerfileFichier texte définissant comment construire une imageLa recette elle-même
RegistryDépôt d'images (Docker Hub, GitLab Registry, etc.)Bibliothèque de recettes
VolumeRépertoire persistant partagé entre hôte et conteneurBoîte de conservation
NetworkRéseau virtuel isolé pour faire communiquer les conteneursRéseau local entre cuisiniers
Docker ComposeOutil pour définir et lancer plusieurs conteneurs ensembleOrchestre plusieurs cuisiniers
ℹ️ Contrairement à une VM, un conteneur Docker partage le noyau Linux de l'hôte. Il est plus léger (démarrage en millisecondes, quelques Mo) mais moins isolé qu'une VM complète.

2. Installation Docker sur Debian 13

# Supprimer les anciennes versions si présentes
sudo apt remove docker docker-engine docker.io containerd runc

# Installer les dépendances
sudo apt update
sudo apt install ca-certificates curl gnupg -y

# Ajouter la clé GPG officielle Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Ajouter le dépôt Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Installer Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# Vérifier l'installation
sudo docker run hello-world
# Post-installation : utiliser Docker sans sudo
sudo usermod -aG docker $USER
newgrp docker

# Activer Docker au démarrage
sudo systemctl enable --now docker

# Vérifier la version
docker version
docker info

3. Commandes essentielles — Conteneurs

CommandeActionExemple
docker runCréer et démarrer un conteneurdocker run -d -p 80:80 nginx
docker psLister les conteneurs actifsdocker ps
docker ps -aLister tous les conteneurs (actifs + arrêtés)docker ps -a
docker stopArrêter un conteneur proprementdocker stop mon-nginx
docker startRedémarrer un conteneur arrêtédocker start mon-nginx
docker restartRedémarrer un conteneurdocker restart mon-nginx
docker rmSupprimer un conteneur arrêtédocker rm mon-nginx
docker rm -fForcer la suppression (même actif)docker rm -f mon-nginx
docker logsVoir les logs d'un conteneurdocker logs mon-nginx
docker logs -fSuivre les logs en temps réeldocker logs -f mon-nginx
docker exec -itOuvrir un shell dans un conteneur actifdocker exec -it mon-nginx bash
docker inspectVoir la configuration complète d'un conteneurdocker inspect mon-nginx
docker statsVoir l'utilisation CPU/RAM des conteneursdocker stats
# Exemple complet : lancer un serveur Nginx
docker run -d \
  --name mon-nginx \
  -p 8080:80 \
  -v /var/www/html:/usr/share/nginx/html:ro \
  --restart unless-stopped \
  nginx:latest

# Options expliquées :
# -d            : détaché (arrière-plan)
# --name        : nom du conteneur
# -p 8080:80    : port hôte:port conteneur
# -v            : volume (répertoire partagé)
# --restart     : politique de redémarrage
# nginx:latest  : image utilisée

4. Gestion des images

CommandeActionExemple
docker pullTélécharger une image depuis le registrydocker pull debian:13
docker imagesLister les images localesdocker images
docker rmiSupprimer une imagedocker rmi nginx:latest
docker buildConstruire une image depuis un Dockerfiledocker build -t monapp:v1 .
docker tagRenommer / étiqueter une imagedocker tag monapp:v1 monapp:latest
docker pushEnvoyer une image vers un registrydocker push monuser/monapp:v1
docker searchRechercher une image sur Docker Hubdocker search nginx
docker historyVoir les couches d'une imagedocker history nginx

5. Volumes — Persistance des données

Par défaut, les données d'un conteneur sont perdues à sa suppression. Les volumes permettent la persistance :

TypeSyntaxeUsage
Bind mount-v /chemin/hote:/chemin/conteneurPartager un répertoire existant de l'hôte
Named volume-v nom_volume:/chemin/conteneurVolume géré par Docker, stocké dans /var/lib/docker/volumes/
tmpfs--tmpfs /chemin/conteneurVolume en RAM (temporaire, pour données sensibles)
# Créer un volume nommé
docker volume create mes-donnees

# Utiliser le volume dans un conteneur
docker run -d -v mes-donnees:/var/lib/mysql mysql:8

# Lister les volumes
docker volume ls

# Inspecter un volume
docker volume inspect mes-donnees

# Supprimer un volume non utilisé
docker volume rm mes-donnees

6. Réseaux Docker

Driver réseauDescriptionUsage
bridgeRéseau isolé par défaut (docker0)Conteneurs sur le même hôte qui communiquent
hostPartage le réseau de l'hôtePerformances maximales, moins d'isolation
noneAucun réseauConteneur totalement isolé
overlayRéseau multi-hôtes (Docker Swarm)Cluster de conteneurs sur plusieurs serveurs
# Créer un réseau personnalisé
docker network create mon-reseau

# Lancer des conteneurs sur ce réseau
docker run -d --name app --network mon-reseau monapp
docker run -d --name db  --network mon-reseau mysql:8

# Les conteneurs du même réseau se joignent par nom
# "app" peut accéder à "db" via : mysql -h db

# Lister les réseaux
docker network ls
Quelle est la différence entre une image Docker et un conteneur ?
  • Il n'y a pas de différence
  • L'image est le modèle statique, le conteneur est l'instance en cours d'exécution
  • Le conteneur est le modèle, l'image est l'instance
  • Une image est une VM, un conteneur est un processus

✅ Réponse : L'image est le modèle statique, le conteneur est l'instance en cours d'exécution

Que fait l'option -d dans docker run ?
  • Supprime le conteneur après exécution
  • Lance le conteneur en mode débogage
  • Lance le conteneur en arrière-plan (détaché)
  • Donne les droits root au conteneur

✅ Réponse : Lance le conteneur en arrière-plan (détaché)

Comment entrer dans un conteneur actif pour exécuter des commandes ?
  • docker enter conteneur bash
  • docker exec -it conteneur bash
  • docker attach conteneur
  • docker ssh conteneur

✅ Réponse : docker exec -it conteneur bash

Quel type de volume Docker est stocké dans /var/lib/docker/volumes/ ?
  • Bind mount
  • tmpfs
  • Named volume
  • NFS volume

✅ Réponse : Named volume

Quelle commande supprime toutes les images non utilisées ?
  • docker rmi all
  • docker image prune -a
  • docker clean images
  • docker rm --images

✅ Réponse : docker image prune -a

🎯 Passer l'évaluation de cette fiche