====== 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