docker volumes en netwerken beheren
Docker Volumes En Netwerken Beheren
Docker volumes en netwerken beherenDit artikel legt uit hoe je persistente data en containercommunicatie in Docker beheert, bedoeld voor ontwikkelaars en DevOps-engineers die Docker 24.0 of hoger gebruiken.
VEREISTEN - Docker Engine 24.0 of hoger - Terminal-toegang met sudo-rechten (of Docker zonder root) - Basiscommando's voor het starten van containers bekend
STAPPEN
1. Maak een Docker volume aan Een volume blijft bestaan nadat de container verdwijnt. Gebruik `docker volume create` om expliciet een volume aan te maken. ``` docker volume create pixzo-data ```
2. Start een container met het volume Koppel het volume met `--mount` aan de container. Dit behoudt data zoals databasebestanden of logs na herstart. ``` docker run -d --name postgres-db --mount source=pixzo-data,target=/var/lib/postgresql/data postgres:16 ```
3. Controleer of het volume is gekoppeld Bekijk de details van de actieve container om de mount te bevestigen. ``` docker inspect postgres-db --format='{{json .Mounts}}' ```
4. Maak een user-defined network aan Containers op een eigen netwerk kunnen elkaar vinden op containernaam, niet alleen IP-adres. ``` docker network create --driver bridge pixzo-net ```
5. Start een container op het eigen netwerk Voeg de `--network` vlag toe om de container op `pixzo-net` te laten communiceren. ``` docker run -d --name app-server --network pixzo-net nginx:latest ```
6. Koppel een bestaande container aan een extra netwerk Een container kan aan meerdere netwerken worden gekoppeld voor microservices-segmentatie. ``` docker network connect pixzo-net postgres-db ```
7. Publiceer een containerpoort naar de host Maak de applicatie bereikbaar via `--publish` op een vaste hostpoort. ``` docker run -d --name web-ui --publish 8080:80 --network pixzo-net nginx:latest ```
8. Ruim ongebruikte volumes op Verwijder volumes die niet meer aan een container zijn gekoppeld om schijfruimte vrij te maken. ``` docker volume prune -f ```
VERIFICATIE Controleer of alle containers op het netwerk elkaar kunnen resolven: ``` docker exec app-server ping postgres-db ``` Lukt dit? Dan functioneert de naamresolutie correct.
VEELGESTELDE PROBLEMEN
1. Container ziet volume niet na herstart Oorzaak: volume is niet gekoppeld met `--mount`, maar met `-v` en een absoluut pad. Gebruik altijd `--mount source=volumenaam,target=/pad` in productie. Los op door container opnieuw te starten met correcte mount.
2. Ping naar containernaam faalt Oorzaak: containers zitten niet op hetzelfde user-defined network. Gebruik `docker network ls` om netwerken te controleren en koppel de container met `docker network connect`.
3. Volume neemt te veel schijfruimte in Oorzaak: oude, ongekoppelde volumes stapelen zich op. Voer `docker system df` uit om ruimtegebruik te inspecteren en daarna `docker volume prune` om op te schonen.
Een goede volgende stap is het automatiseren van volume-back-ups met een cronjob of het implementeren van network policies in Docker Swarm.