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 persistente data en containercommunicatie beheert met Docker volumes en netwerken in Docker
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 persistente data en containercommunicatie beheert met Docker volumes en netwerken in Docker Compose.

Vereisten - Docker Engine 24.0 of hoger - Docker Compose v2.20 of hoger - Basiskennis van `docker-compose.yml` syntax - Terminal/shell toegang met voldoende rechten om Docker commands uit te voeren

Stappen

1. Definieer named volumes in je docker-compose.yml

Named volumes worden beheerd door Docker en overleven containerherstart. Declareer ze in de top-level `volumes` sectie en mount ze bij een service.

```yaml version: '3.8' services: db: image: postgres:16 volumes: - db-data:/var/lib/postgresql/data volumes: db-data: ```

2. Gebruik bind mounts alleen voor ontwikkeling

Bind mounts geven directe toegang tot mappen op de host. Gebruik ze voor configbestanden of code tijdens development, niet voor productiedata.

```yaml services: web: image: nginx:alpine volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro ```

3. Voeg tmpfs mounts toe voor tijdelijke data

Tijdelijke data zoals cache of sessies kun je in het geheugen opslaan met tmpfs. Deze data verdwijnt bij containerstop.

```yaml services: app: image: myapp:latest tmpfs: - /tmp/cache:size=100M ```

4. Maak gebruik van Docker's default network

Docker Compose maakt automatisch een user-defined bridge network. Services communiceren via servicenamen in plaats van IP-adressen.

```yaml services: web: image: nginx:alpine depends_on: - api api: image: node:18 bereikbaar voor web als "api" ```

5. Definieer expliciete netwerken voor isolatie

Voor betere controle maak je aparte netwerken aan. Koppel services aan specifieke netwerken via de `networks` sectie.

```yaml services: frontend: image: nginx:alpine networks: - frontend-net backend: image: node:18 networks: - backend-net - db-net database: image: postgres:16 networks: - db-net networks: frontend-net: backend-net: db-net: ```

6. Isoleer interne services met `internal: true`

Voorkom dat services toegang hebben tot internet of het host-netwerk door `internal: true` in te stellen. Dit is essentieel voor databases of interne API's.

```yaml networks: internal-db: internal: true ```

7. Geef containers statische IP-adressen (optioneel)

Soms heb je vaste IP-adressen nodig. Gebruik `ipam` configuratie in het netwerk en wijs IP-adressen toe per service.

```yaml networks: custom-net: ipam: config: - subnet: 172.20.0.0/16 services: db: networks: custom-net: ipv4_address: 172.20.0.10 ```

8. Ruim ongebruikte volumes op

Volumes worden niet automatisch verwijderd. Gebruik `docker volume prune` regelmatig om schijfruimte vrij te maken.

```bash docker volume prune -f ```

Verificatie

Controleer of volumes correct zijn aangemaakt en netwerken functioneren:

```bash Toon alle volumes docker volume ls

Inspecteer een specifiek volume docker volume inspect db-data

Toon netwerkdetails docker network ls docker network inspect

Test DNS-resolutie tussen containers docker exec -it ping ```

Veelgestelde problemen

Probleem 1: Volume wordt niet gevonden na containerherstart Oorzaak: Gebruik van een anonymous volume in plaats van named volume. Oplossing: Vervang `volumes: - /var/lib/mysql/data` door `volumes: - db-data:/var/lib/mysql/data` en declareer `db-data:` in top-level volumes.

Probleem 2: Containers kunnen elkaar niet bereiken via servicenaam Oorzaak: Services zitten in verschillende netwerken of gebruiken `network_mode: host`. Oplossing: Controleer of beide services hetzelfde netwerk delen of koppel ze expliciet aan een gezamenlijk netwerk.

Probleem 3: `docker volume prune` verwijdert per ongeluk data Oorzaak: Het commando verwijdert alle ongebruikte volumes zonder waarschuwing. Oplossing: Gebruik `docker volume prune --filter "label!=keep"` of voeg een label toe aan volumes die je wilt behouden.

Interne services afschermen van internet voegt een extra beveiligingslaag toe, maar onthoud dat DNS-resolutie alleen werkt binnen hetzelfde Docker netwerk.

— ✦ —
← Terug naar kennisbank