Outils pour utilisateurs

Outils du site


infra:docker_memo

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

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
infra/docker_memo.txt · Dernière modification : de ewen