Passer au contenu principal

Données et réseau (Docker)

Volumes et persistance

Le filesystem d'un container est éphémère : tout ce qui est écrit dedans disparaît à la suppression du container. Les volumes et les bind mounts permettent de persister des données et de les partager entre containers ou avec l'hôte.

Named volumes

Les named volumes sont gérés par Docker dans /var/lib/docker/volumes/. C'est la méthode recommandée pour la persistance des données d'application.

# Créer un volume
docker volume create pgdata

# Lister les volumes
docker volume ls

# Inspecter (voir le mountpoint)
docker volume inspect pgdata

# Utiliser un volume dans un container
docker run -d   --name postgres   -e POSTGRES_PASSWORD=secret   -v pgdata:/var/lib/postgresql/data   postgres:16

# Supprimer un volume (seulement si aucun container ne l'utilise)
docker volume rm pgdata

# Nettoyer les volumes orphelins
docker volume prune

Bind mounts

Les bind mounts montent un chemin de l'hôte dans le container. Utiles pour le développement (rechargement à chaud) ou pour injecter des fichiers de configuration.

# Monter un répertoire hôte dans le container
docker run -d   -v /srv/nginx/conf:/etc/nginx/conf.d:ro   -v /srv/nginx/html:/usr/share/nginx/html   nginx:alpine

L'option :ro monte en lecture seule — recommandé pour les fichiers de configuration. Les bind mounts sont sensibles aux permissions : l'UID du processus dans le container doit correspondre au propriétaire du répertoire hôte.

tmpfs

# Filesystem en mémoire, non persisté, non partageable entre containers
docker run -d   --mount type=tmpfs,target=/tmp,tmpfs-size=100m   myapp:latest

Utile pour les fichiers temporaires sensibles (tokens, sessions) qui ne doivent pas être écrits sur disque.

Backup et restauration de volumes

# Backup : monter le volume + tar vers stdout
docker run --rm   -v pgdata:/data:ro   -v $(pwd):/backup   debian:13-slim   tar czf /backup/pgdata-backup.tar.gz -C /data .

# Restauration
docker run --rm   -v pgdata:/data   -v $(pwd):/backup   debian:13-slim   tar xzf /backup/pgdata-backup.tar.gz -C /data

Volume drivers

Docker supporte des drivers tiers pour monter des volumes distants :

  • local : driver par défaut, supporte NFS et CIFS via options
  • rexray, convoy : AWS EBS, Azure Disk
# Volume NFS via driver local
docker volume create   --driver local   --opt type=nfs   --opt o=addr=192.168.1.10,rw   --opt device=:/srv/nfs/data   nfs-data