Kennisbank Docker Containers docker volumes en netwerken beheren
docker containers gevorderd 01 June 2026

docker volumes en netwerken beheren

Docker volumes en netwerken beherenDit artikel legt uit hoe je Docker volumes voor persistente data en netwerken voor containercommunicatie beheert in
Docker Volumes En Netwerken Beheren
✦ ✦ ✦

Docker Volumes En Netwerken Beheren

HistorieCheck Redactie  ·  01 June 2026  ·  docker-containers

Docker volumes en netwerken beheren

Dit artikel legt uit hoe je Docker volumes voor persistente data en netwerken voor containercommunicatie beheert in productieomgevingen.

Vereisten - Docker Engine 20.10.0 of hoger (check met `docker version`) - Basiskennis van Docker Compose (versie 2.x) - Toegang tot een terminal met voldoende rechten om Docker-commando's uit te voeren

Stappen

1. Creëer een named volume voor persistente data Named volumes hebben een eigen levenscyclus en overleven container-removal. Dit maakt ze geschikt voor productiedata zoals databases of logs. ``` docker volume create mijn-app-data ```

2. Mount het volume in een container Volumes koppel je aan specifieke paden in de container. Data die naar dat pad wordt geschreven, blijft behouden na container-herstart. ``` docker run -d --name mysql-db -v mijn-app-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=geheim mysql:8.0 ```

3. Definieer volumes in Docker Compose (declaratief) Voor productieomgevingen definieer je volumes in `docker-compose.yml`. Dit zorgt voor reproduceerbare deployments en voorkomt handmatige fouten. ```yaml version: '3.8' volumes: db-data: driver: local services: database: image: postgres:14 volumes: - db-data:/var/lib/postgresql/data ```

4. Maak een user-defined bridge network aan User-defined bridge networks bieden automatische DNS-resolutie via servicenamen, zonder afhankelijkheid van vaste IP-adressen. Dit maakt applicaties robuuster bij container-herstart. ``` docker network create mijn-app-netwerk ```

5. Start containers in hetzelfde netwerk Containers binnen hetzelfde user-defined netwerk communiceren via servicenamen. Gebruik dit om interne services (database, cache) te isoleren van de buitenwereld. ``` docker run -d --name web-app --network mijn-app-netwerk nginx:1.24 docker run -d --name cache-service --network mijn-app-netwerk redis:7 ```

6. Configureer netwerkisolatie in Docker Compose Scheid publieke en private services door netwerken met verschillende zichtbaarheid. Gebruik `internal: true` voor datalagen die niet van buitenaf bereikbaar hoeven te zijn. ```yaml version: '3.8' networks: frontend: driver: bridge backend: driver: bridge internal: true services: api: image: node:18 networks: - frontend - backend database: image: postgres:14 networks: - backend ```

7. Ruim ongebruikte volumes op Ongebruikte volumes vullen langzaam de schijfruimte. Het commando `docker volume prune` verwijdert alle volumes die niet aan een actieve container zijn gekoppeld. ``` docker volume prune -f ```

Verificatie Controleer of volumes en netwerken correct zijn aangemaakt en worden gebruikt: ``` docker volume ls docker volume inspect mijn-app-data docker network ls docker network inspect mijn-app-netwerk ```

Veelgestelde problemen

1. Database crasht na container-herstart door corrupte data - Oorzaak: bind mount in plaats van named volume. Bind mounts kopiëren bestaande directory-inhoud, wat conflicten geeft met database-initialisatie. - Oplossing: gebruik `docker volume create` en mount het named volume in plaats van een host-pad.

2. Containers kunnen elkaar niet vinden via servicenaam - Oorzaak: containers draaien in verschillende networks. - Oplossing: controleer met `docker inspect [container]` of beide containers in hetzelfde user-defined netwerk zitten. Het default bridge-netwerk biedt geen DNS via servicenamen.

3. Volume-prune verwijdert per ongeluk data - Oorzaak: `docker volume prune` verwijdert ALLE ongebruikte volumes, ook die bedoeld zijn voor later gebruik. - Oplossing: markeer volumes als in-gebruik door een dummy-container met `docker run -v mijn-data:/data alpine sleep infinity`. Of verwijder volumes alleen handmatig met `docker volume rm`.

— ✦ —
← Terug naar kennisbank