Kennisbank › Docker › Gérer les volumes et réseaux docker
docker gevorderd 01 June 2026

Gérer les volumes et réseaux docker

Gérer les volumes et les réseaux DockerCet article explique comment gérer les volumes et les réseaux Docker pour des données persistantes et une communication sécurisée entre services.

Gérer les volumes et les réseaux Docker

Cet article explique comment gérer les volumes et les réseaux Docker pour les données persistantes et une communication sécurisée entre services dans les applications multi-conteneurs.

Prérequis

- Docker Engine 24.0 ou supérieur - Docker Compose V2 (intégré à Docker Desktop ou installé séparément) - Connaissances de base des conteneurs Docker et du fichier `docker-compose.yml` - Terminal ou CLI avec la commande `docker` disponible

Étapes

1. Créez un volume nommé pour les données persistantes Utilisez `docker volume create` plutôt que des bind mounts. Cela donne à Docker un contrôle total sur le stockage. docker volume create mijn-data

2. Définissez les volumes de manière déclarative dans docker-compose.yml Ajoutez une section `volumes` de niveau supérieur et liez-la à un service. Cela garantit la reproductibilité et une séparation claire.

volumes:
     db-data:
   
   services:
     database:
       image: postgres:16
       volumes:
         - db-data:/var/lib/postgresql/data

3. Créez un réseau bridge défini par l'utilisateur Au lieu du réseau par défaut, utilisez un réseau nommé pour une meilleure résolution DNS et une meilleure isolation.

networks:
     app-net:
       driver: bridge

4. Connectez les services au réseau Indiquez quels services doivent communiquer entre eux. Une base de données ne doit pas nécessairement être accessible directement depuis l'extérieur.

services:
     web:
       image: nginx:latest
       networks:
         - app-net
     database:
       image: postgres:16
       networks:
         - app-net

5. Isolez un réseau avec `internal: true` Utilisez cela pour les bases de données ou les services backend qui n'ont pas besoin d'accès à Internet.

networks:
     internal-net:
       driver: bridge
       internal: true

6. Ajoutez un service à plusieurs réseaux Un service applicatif peut par exemple se trouver à la fois dans un réseau public et un réseau interne.

services:
     app:
       image: my-app:latest
       networks:
         - frontend-net
         - backend-net

7. Nettoyez les volumes inutilisés Les volumes qui ne sont plus liés à un conteneur continuent d'occuper de l'espace disque. Nettoyez-les périodiquement. docker volume prune

8. Utilisez des plugins de volume pour les configurations multi-hôtes Pour les clusters (Docker Swarm, Kubernetes), utilisez un stockage externe via des plugins. Cela permet la migration des volumes entre hôtes.

volumes:
     shared-data:
       driver: nfs
       driver_opts:
         server: nfs-server.example.com
         path: /exports/data

Vérification

Vérifiez que les volumes sont correctement créés et que les réseaux fonctionnent :

Liste tous les volumes
docker volume ls</p><p>Inspecte un volume
docker volume inspect mijn-data</p><p>Affiche les réseaux et les conteneurs connectés
docker network ls
docker network inspect app-net

Testez la résolution DNS entre les services : docker compose exec web ping database

Problèmes fréquents

1. Le conteneur ne trouve pas un autre service par nom d'hôte Cause : Les services ne se trouvent pas dans le même réseau défini par l'utilisateur. Solution : Ajoutez explicitement les deux services au même réseau nommé dans `docker-compose.yml`.

2. Les données disparaissent après la suppression du conteneur Cause : Utilisation du stockage interne du conteneur au lieu d'un volume. Solution : Définissez un volume nommé et liez-le au service. Committer des conteneurs ne remplace pas cela.

3. L'espace du volume est plein, mais le conteneur tourne toujours Cause : Les volumes inutilisés persistent. Solution : Exécutez `docker volume prune` régulièrement ou automatisez-le via une tâche cron. Ajoutez `--filter` pour conserver des volumes spécifiques.

Les erreurs courantes proviennent du mélange de bind mounts et de volumes dans la même application — choisissez une seule stratégie et tenez-vous-y.

← Terug naar kennisbank