docker volumes en netwerken beheren
Docker Volumes En Netwerken Beheren
Docker volumes en netwerken beheren
Dit artikel legt uit hoe je Docker volumes voor persistente data en netwerken voor servicecommunicatie beheert. Gericht op ontwikkelaars die productieklare containerized applicaties bouwen.
VEREISTEN - Docker Engine 24.0 of hoger - Docker Compose v2.20 of hoger - Basiskennis van Docker containers en command-line - Terminal of shell met Docker-toegang
STAPPEN
1. Maak een Docker volume handmatig aan Gebruik `docker volume create` voor expliciet beheer. Dit is handig voor volumes die je vooraf wilt configureren of inspecteren. ``` docker volume create --name mijn-data-volume ```
2. Koppel een volume aan een container Mount het volume bij het starten van een container. Docker maakt het volume automatisch aan als het nog niet bestaat. ``` docker run -d --name mijn-app -v mijn-data-volume:/app/data nginx:1.25 ```
3. Definieer volumes in Docker Compose Gebruik een `docker-compose.yml` voor reproduceerbare configuratie. Dit is de standaardmanier voor multi-service applicaties. ``` version: '3.8' services: db: image: postgres:16 volumes: - postgres-data:/var/lib/postgresql/data volumes: postgres-data: ```
4. Maak een user-defined bridge network aan Dit netwerktype biedt automatische DNS-resolutie via servicenamen. Containers communiceren zonder harde IP-adressen. ``` docker network create --driver bridge mijn-app-netwerk ```
5. Koppel containers aan het netwerk Bij het starten specificeer je het netwerk. Containers in hetzelfde netwerk kunnen elkaar bereiken met de containernaam. ``` docker run -d --name api --network mijn-app-netwerk mijn-api:1.0 ```
6. Configureer meerdere netwerken in Compose Definieer netwerken in de `networks` sectie. Dit maakt isolatie mogelijk — sommige services krijgen extern bereik, andere blijven intern. ``` version: '3.8' services: frontend: image: nginx:1.25 networks: - extern backend: image: mijn-api:1.0 networks: - intern networks: extern: intern: internal: true ```
7. Verwijder ongebruikte volumes Volumes stapelen zich op en verbruiken schijfruimte. Voer periodiek opschoning uit. ``` docker volume prune ```
8. Inspecteer een volume of netwerk Controleer eigenschappen zoals mountpoint, driver en gekoppelde containers. ``` docker volume inspect mijn-data-volume docker network inspect mijn-app-netwerk ```
VERIFICATIE Controleer of het volume correct werkt met data persistentie: ``` docker run --rm -v mijn-data-volume:/app/data alpine:3.19 sh -c "echo 'test' > /app/data/test.txt && cat /app/data/test.txt" ``` Voor netwerkcommunicatie: start twee containers in hetzelfde netwerk en test DNS-resolutie: ``` docker run --rm --network mijn-app-netwerk alpine:3.19 ping -c 1 api ```
VEELGESTELDE PROBLEMEN
Probleem: Container kan andere container niet bereiken via servicenaam Oorzaak: Containers zitten in verschillende netwerken. Oplossing: Koppel beide containers aan hetzelfde user-defined bridge network met `docker network connect`.
Probleem: Volume blijft bestaan na verwijderen container Oorzaak: Docker volumes worden niet automatisch verwijderd. Oplossing: Verwijder volumes expliciet met `docker volume rm` of `docker volume prune`. Gebruik de `--rm` vlag niet voor persistente data.
Probleem: Permission denied bij schrijven naar volume in container Oorzaak: De container gebruiker heeft geen schrijfrechten op het volume mountpoint. Oplossing: Specificeer de juiste user in de Dockerfile of voeg `user: "1000:1000"` toe in Compose. Controleer rechten op het volume mountpoint met `docker run --rm -v mijn-volume:/data alpine ls -la /data`.
Volumes en netwerken blijven bestaan, ook als je containers vervangt. Dat is precies de bedoeling — maar vergeet niet dat onbeheerde volumes schijfruimte blijven opslokken en dat netwerken zonder gebruikers geen verkeer routeren.