====== Mémo commandes Docker & Docker Compose ======
**Documentation rédigée par :** GADONNAUD Ewen
**Formation :** BTS SIO 1ère année - Option SISR
**Établissement :** Lycée Paul-Louis Courier, Tours
**Date :** Mars 2026
{{ :wiki:logo.png?150 |Logo PLC-SIO}}
===== 1. Docker — Conteneurs =====
**Lister les conteneurs**
docker ps # Conteneurs en cours d'exécution
docker ps -a # Tous les conteneurs (y compris arrêtés)
**Démarrer / arrêter / redémarrer**
docker start searxng
docker stop searxng
docker restart searxng
**Supprimer un conteneur**
docker rm searxng # Conteneur arrêté
docker rm -f searxng # Force la suppression même si actif
**Exécuter une commande dans un conteneur actif**
docker exec -it searxng bash # Ouvre un shell interactif
docker exec searxng ls /etc/searxng # Commande one-shot
**Consulter les logs**
docker logs searxng
docker logs searxng --tail 50 # 50 dernières lignes
docker logs searxng -f # Suivi en temps réel
**Inspecter un conteneur**
docker inspect searxng # Détails complets (réseau, volumes, config...)
docker stats # Consommation CPU/RAM en temps réel
===== 2. Docker — Images =====
**Lister les images locales**
docker images
**Télécharger une image**
docker pull searxng/searxng:latest
**Supprimer une image**
docker rmi searxng/searxng:latest
**Mettre à jour une image**
docker pull searxng/searxng:latest # Récupère la nouvelle version
docker compose up -d # Recrée le conteneur avec la nouvelle image
===== 3. Docker — Volumes =====
**Lister les volumes**
docker volume ls
**Inspecter un volume (chemin réel sur l'hôte)**
docker volume inspect searxng_searxng-cache
**Supprimer les volumes orphelins**
docker volume prune
===== 4. Docker — Nettoyage =====
**Supprimer toutes les ressources inutilisées (conteneurs arrêtés, images sans tag, volumes orphelins)**
docker system prune # Avec confirmation
docker system prune -a # Inclut aussi les images non utilisées
docker system prune --volumes # Inclut les volumes (attention, irréversible)
**Voir l'espace disque utilisé par Docker**
docker system df
===== 5. Docker Compose — Gestion des services =====
Les commandes suivantes s'exécutent depuis le dossier contenant le ''docker-compose.yml''.
**Démarrer les services**
docker compose up -d # Démarre en arrière-plan
docker compose up # Démarre avec logs dans le terminal
**Arrêter les services**
docker compose down # Arrête et supprime les conteneurs
docker compose down -v # Idem + supprime les volumes associés
docker compose stop # Arrête sans supprimer les conteneurs
**Redémarrer**
docker compose restart
docker compose restart searxng # Redémarre un service spécifique
**Voir l'état des services**
docker compose ps
**Consulter les logs**
docker compose logs
docker compose logs -f # Suivi en temps réel
docker compose logs searxng # Logs d'un service spécifique
**Forcer la recréation des conteneurs (après modif du docker-compose.yml)**
docker compose up -d --force-recreate
**Mettre à jour les images et recréer les conteneurs**
docker compose pull # Télécharge les nouvelles versions des images
docker compose up -d # Recrée les conteneurs avec les nouvelles images
===== 6. Structure d'un docker-compose.yml =====
Un fichier ''docker-compose.yml'' se compose de plusieurs sections de niveau racine. Voici la structure complète avec les options les plus courantes :
version: '3' # Version du format Compose
services: # Définition des conteneurs
nom_du_service:
image: image:tag # Image Docker à utiliser
container_name: nom # Nom explicite du conteneur (optionnel)
build: ./dossier # Alternative à image : build depuis un Dockerfile
ports:
- "port_hote:port_conteneur" # Ex: "8085:8080"
volumes:
- ./dossier_local:/chemin/conteneur # Volume lié (bind mount)
- ./fichier.yml:/etc/service/fichier.yml # Fichier spécifique
- nom_volume:/chemin/conteneur # Volume nommé
environment: # Variables d'environnement
- MA_VARIABLE=valeur
- AUTRE_VAR=valeur
env_file: # Alternative : charger depuis un fichier .env
- .env
networks: # Réseaux auxquels le service est connecté
- mon_reseau
depends_on: # Ordre de démarrage
- autre_service
restart: unless-stopped # Politique de redémarrage
# always → redémarre toujours
# on-failure → redémarre uniquement en cas d'erreur
# unless-stopped → redémarre sauf si arrêté manuellement
# no → ne redémarre jamais
dns: # Serveurs DNS explicites
- 1.1.1.1
- 8.8.8.8
volumes: # Déclaration des volumes nommés
nom_volume: # Docker gère le stockage automatiquement
autre_volume:
external: true # Volume créé manuellement en dehors de Compose
networks: # Déclaration des réseaux personnalisés
mon_reseau:
driver: bridge # bridge = réseau local entre conteneurs (défaut)
**Les politiques de redémarrage en pratique**
^ Valeur ^ Comportement ^ Cas d'usage ^
| ''no'' | Ne redémarre jamais | Conteneurs de test |
| ''always'' | Redémarre toujours, même après un ''docker stop'' | Services critiques |
| ''unless-stopped'' | Redémarre sauf si arrêté manuellement | Homelab (recommandé) |
| ''on-failure'' | Redémarre uniquement si code d'erreur non nul | Jobs ponctuels |
**Bind mount vs Volume nommé**
^ Type ^ Syntaxe ^ Quand l'utiliser ^
| Bind mount | ''./local:/conteneur'' | Fichiers de config à éditer directement sur l'hôte |
| Volume nommé | ''nom:/conteneur'' | Données persistantes gérées par Docker (BDD, cache) |
===== 7. Cas pratiques homelab =====
**Redémarrer SearXNG après modification de settings.yml**
cd /opt/searxng
docker compose restart
**Vérifier que le cache favicons a bien été créé**
docker exec searxng ls -la /var/cache/searxng
**Voir les logs de SearXNG en temps réel**
cd /opt/searxng
docker compose logs -f
**Accéder au shell d'un conteneur pour déboguer**
docker exec -it searxng sh # SearXNG utilise sh et non bash (image Alpine)
**Vérifier la résolution DNS depuis l'intérieur d'un conteneur**
docker exec searxng nslookup google.com