docker volumes en netwerken beheren
Docker Volumes En Netwerken Beheren
Docker Volumes en Netwerken Beheren
Dit artikel legt uit hoe je persistente data en containercommunicatie beheert met Docker volumes en netwerken. Gericht op ontwikkelaars die Docker 24.0.7 of hoger gebruiken.
Vereisten - Docker Engine 24.0.7 of hoger - Toegang tot een terminal met Docker-commando's - Basiskennis van Docker containers en images
Stappen
1. Maak een volume aan Een volume is een door Docker beheerde opslaglocatie voor persistente data. Gebruik een duidelijke, consistente naam. ```bash docker volume create mijn-data-volume ```
2. Koppel een volume aan een container met de `--mount` syntax Dit is de moderne, expliciete methode. Het volume wordt gemount op `/data` in de container. ```bash docker run -d --name mijn-container --mount source=mijn-data-volume,target=/data nginx:alpine ```
3. Bekijk bestaande volumes Houd overzicht met `docker volume ls`. Gebruik `docker volume inspect` voor details zoals mountpoint en driver. ```bash docker volume ls docker volume inspect mijn-data-volume ```
4. Verwijder ongebruikte volumes Periodiek opschonen voorkomt vulschijven. `docker volume prune` verwijdert alle volumes die niet door een container worden gebruikt. ```bash docker volume prune ```
5. Definieer volumes in Docker Compose Declareer volumes onder de top-level `volumes:` sleutel en koppel ze aan services. ```yaml version: '3.8' services: db: image: postgres:16 volumes: - pg-data:/var/lib/postgresql/data volumes: pg-data: ```
6. Maak een custom bridge-netwerk aan Een custom netwerk biedt betere isolatie dan het default bridge-netwerk. Services vinden elkaar via hun servicenaam. ```bash docker network create --driver bridge mijn-netwerk ```
7. Start een container op een custom netwerk De container is nu bereikbaar voor andere containers op hetzelfde netwerk via de containernaam. ```bash docker run -d --name app-container --network mijn-netwerk nginx:alpine ```
8. Gebruik een geïsoleerd netwerk in Docker Compose Stel `internal: true` in om uitgaande verbindingen naar het internet te blokkeren. Dit verhoogt de veiligheid. ```yaml version: '3.8' services: web: image: nginx:alpine networks: - intern-net networks: intern-net: driver: bridge internal: true ```
Verificatie Controleer of het volume correct is gemount en het netwerk werkt.
```bash Volume check docker inspect mijn-container | jq '.[].Mounts[].Name'
Netwerk check docker exec mijn-container ping app-container ``` Als `ping` werkt, communiceren de containers correct. Als het volume niet leeg is, zie je bestanden in `/data`.
Veelgestelde problemen
1. Volume wordt niet gevonden bij `docker run`
- Oorzaak: volume bestaat niet
- Oplossing: maak het volume eerst aan met `docker volume create
2. Container kan andere container niet vinden op hetzelfde netwerk
- Oorzaak: containers zitten op verschillende netwerken
- Oplossing: koppel beide containers aan hetzelfde custom netwerk met `docker network connect
3. Docker Compose volume blijft leeg na start - Oorzaak: volume is gedeclareerd maar niet gekoppeld in de service - Oplossing: controleer de service-definitie: elk volume onder `volumes:` in de service moet overeenkomen met een top-level `volumes:` declaratie
Dit is de kern. De rest hangt af van de specifieke data- en netwerkbehoeften van je applicatie.