Leerpad
Netwerken is een kernconcept van gecontaineriseerde applicaties. Het maakt naadloze communicatie mogelijk tussen alle containers, hosts en externe services. De ingebouwde netwerkfuncties van Docker zijn essentieel om services effectief te isoleren, datastromen te beveiligen en schaalbare microservice-architecturen te orkestreren.
Een van de krachtigste tools in deze context is het commando docker network create, waarmee DevOps-engineers en ontwikkelaars custom netwerken kunnen definiëren die zijn afgestemd op de behoeften van hun applicaties.
Daarom neem ik je vandaag stap voor stap mee in het effectief aanmaken en beheren van deze Docker-netwerken.
Ben je nieuw met Docker? Bekijk dan zeker onze skill track Containerization and Virtualization with Docker and Kubernetes om praktijkervaring op te doen.
Wat is Docker Networking?
Moderne applicaties bouwen betekent meestal dat je meerdere services gebruikt in afzonderlijke, geïsoleerde containers. Docker-networking biedt een flexibele en krachtige manier om die containers met elkaar en met externe systemen te verbinden, via het netwerkmodel van jouw keuze, ongeacht de onderliggende infrastructuur.
Dit onderdeel geeft je basiskennis over Docker-networking, een sleutelcomponent van Docker, en hoe je beoordeelt welke netwerkconfiguratie past bij de behoeften van jouw applicatie. Maar voordat je begint: als je helemaal nieuw bent met Docker, raad ik je sterk aan om Introduction to Docker te bekijken om een solide basis te leggen voordat je dieper in Docker-networking duikt.
Network drivers: de basis van Docker-networking
Docker gebruikt netwerkdrivers om te bepalen hoe containers verbinden en communiceren. Elke driver definieert hoe container-netwerken worden afgehandeld. Daardoor verschillen prestaties, isolatie en complexiteit per hoofd-netwerkdriver van Docker.
Overzicht van de kerndrivers voor Docker-netwerken
Dit zijn de belangrijkste ingebouwde drivers die Docker ondersteunt:
- Bridge: De standaarddriver voor standalone containers. Maakt een geïsoleerd intern netwerk op de host, zodat containers via IP’s of containernamen met elkaar kunnen praten. Ideaal voor ontwikkeling en testen op één host.
- Host: Verwijdert isolatie door de netwerkstack van de host te delen. De container gebruikt direct de IP en poorten van de host. Nuttig voor high-performance applicaties of compatibiliteit met services op hostniveau.
- None: Schakelt alle netwerktoegang voor de container uit. Alleen een loopback-interface is beschikbaar. Geschikt voor containers die geen externe connectiviteit nodig hebben of strikte beveiligingsisolatie vereisen.
- Overlay: Maakt communicatie mogelijk tussen containers op verschillende Docker-hosts. Veelgebruikt in Docker Swarm en multi-host deployments. Creëert een gedistribueerd netwerk dat de onderliggende fysieke infrastructuur abstraheert.
- Macvlan: Wijst elke container een uniek MAC-adres toe, waardoor hij als een fysiek apparaat op het netwerk verschijnt. Geschikt voor legacy-applicaties die directe toegang tot het fysieke netwerk vereisen.
- IPvlan: Lijkt op macvlan, maar routeert verkeer op IP-laag in plaats van met MAC-adressen. Biedt betere prestaties en controle in omgevingen met hoge dichtheid.
Elke driver beïnvloedt hoe containers met elkaar, met de host en met externe netwerken interageren.
Nieuwsgierig hoe deze netwerktype samenwerken? Onze Intermediate Docker-cursus behandelt Docker-networking, volumes en Compose in praktische detail. Deze verschillen begrijpen is cruciaal voor het ontwerpen van veilige en performante architecturen.
Welk type netwerk moet ik gebruiken?
De juiste netwerkdriver kiezen hangt af van de architectuur en operationele doelen van je applicatie:
- Bridge: Aanbevolen voor de meeste lokale ontwikkelscenario’s en eenvoudige multi-containerapplicaties op één host. Biedt een goede balans tussen isolatie en gebruiksgemak.
- Host: Het beste wanneer containers direct aan de hostnetwerklaag moeten binden, bijvoorbeeld bij het aanbieden van services op standaardpoorten (bijv. poort 80 of 443). Wees voorzichtig met beveiliging en poortconflicten.
- None: Ideaal voor sandbox-workloads of security-kritieke taken die geen netwerktoegang mogen hebben. Gebruikelijk in geautomatiseerde workflows of testen.
- Overlay: Essentieel in geclusterde omgevingen zoals Docker Swarm of Kubernetes, waar containers meerdere hosts beslaan. Maakt horizontale schaalbaarheid en service discovery mogelijk.
- Macvlan: Geprefereerd wanneer containers zich moeten gedragen als fysieke apparaten op het LAN. Gebruikt in bijvoorbeeld netwerk-sniffing, integratie met legacy-systemen of wanneer je de netwerkstack van Docker wilt omzeilen.
- IPvlan: Biedt fijnmazige controle en betere prestaties dan macvlan in omgevingen met strikte netwerkeisen, zoals telecom of financiële systemen.
Houd rekening met factoren zoals hosttopologie, beveiligingsbehoeften en schaalstrategie bij het kiezen van een netwerkdriver.
Nog aan het beslissen welk netwerk past bij jouw workload? Leer hoe Docker zich verhoudt tot Kubernetes in echte deployments met deze Kubernetes vs Docker-gids.
Aangepaste Docker-netwerken maken
Met aangepaste Docker-netwerken bepaal je hoe containers intern met elkaar communiceren en met externe systemen. Dit helpt je services beter te isoleren, voorspelbare IP’s te geven of je architectuur te ontwerpen voor performance of security.
Dit onderdeel leidt je van de basis naar meer geavanceerde features bij het maken van aangepaste Docker-netwerken, inclusief de commando’s en custom IP-configuraties.
Basisopbouw van het commando
Om een aangepast netwerk te maken, gebruik je het docker network create-commando. Hiermee kun je de netwerkdriver, subnet en andere opties definiëren voor meer controle over containercommunicatie.
Hier is een eenvoudig voorbeeld met de standaard bridge-driver:
$ docker network create demo-network -d bridge
Dit commando maakt een bridge-netwerk met de naam demo-network. Docker geeft ter bevestiging een uniek netwerk-ID terug. Op dit moment bestaat het netwerk, maar er zijn nog geen containers op aangesloten.
Je bekijkt bestaande netwerken met:
$ docker network ls
Om een container met je nieuwe netwerk te verbinden, gebruik je de --network-vlag:
$ docker run -it --rm --name container1 --network demo-network busybox:latest
Om een bestaande container aan een netwerk toe te voegen:
$ docker network connect demo-network container2
En om hem te verwijderen:
$ docker network disconnect demo-network container2
Als het netwerk niet meer nodig is, kun je het verwijderen:
$ docker network rm demo-network
Om alle ongebruikte netwerken op te ruimen:
$ docker network prune
Geavanceerd IP-adresbeheer
Bij grotere systemen of specifieke netwerkpolicy’s laat Docker je IP-adresbereiken binnen aangepaste netwerken handmatig beheren.
Je kunt een subnet en gateway definiëren met de vlaggen --subnet en --gateway:
$ docker network create \
--driver bridge \
--subnet 192.168.100.0/24 \
--gateway 192.168.100.1 \
custom-network
Voor nog meer controle gebruik je:
--ip-range: Wijs een pool IP’s toe waaruit containers dynamisch kunnen putten, los van het volledige subnetbereik.--aux-address: Reserveer specifieke IP-adressen binnen het subnet voor externe systemen of documentatiedoeleinden.
Bijvoorbeeld:
$ docker network create \
--driver bridge \
--subnet 192.168.200.0/24 \
--ip-range 192.168.200.128/25 \
--aux-address reserved=192.168.200.254 \
advanced-network
Deze setup:
- Beperkt dynamische container-IP’s tot de bovenste helft van het subnet.
- Voorkomt conflicten met een gereserveerd IP.
- Zorgt voor consistent netwerkgedrag in complexe omgevingen.
Heb je meer begeleide voorbeelden nodig? Verken geavanceerde set-upstrategieën in 10 Docker Project Ideas: From Beginner to Advanced.
Swarm Mode Networking
Docker Swarm-modus maakt het georkestreerd uitrollen van services over een cluster van Docker-hosts mogelijk. Een cruciaal onderdeel hiervan is networking, zodat services op verschillende nodes naadloos en veilig met elkaar kunnen communiceren.
Swarm-bewuste netwerkarchitecturen
Docker Swarm is Docker’s eigen clusteroplossing die een pool van Docker-hosts omzet in één virtuele engine. Het stelt je in staat containers als gedistribueerde services te deployen en beheren. Een van de grote sterke punten is multi-host networking, waardoor services op verschillende machines kunnen communiceren alsof ze op dezelfde host draaien.
Swarm-networking ondersteunt twee hoofdtypen verkeer:
- Controlplane-verkeer – versleutelde beheercommunicatie tussen Docker-nodes.
- Dataplane-verkeer – container-naar-containercommunicatie en toegang tot externe services.
Swarm gebruikt overlay-netwerken voor inter-node servicecommunicatie en routing mesh om extern verkeer over servicereplica’s te load-balancen.
Swarm-netwerken maken
Voor service discovery en veilige multi-hostcommunicatie gebruikt Docker Swarm overlay-netwerken met de scope swarm. Deze kunnen handmatig of automatisch worden aangemaakt wanneer services worden gestart.
Zo maak je een overlay-netwerk met swarm-scope:
$ docker network create \
--driver overlay \
--scope swarm \
my-overlay
Dit netwerk is niet beperkt tot één host; elke node die deelneemt aan de swarm kan containers ermee verbinden. Je kunt het inspecteren met:
$ docker network inspect my-overlay
Overlay-netwerken aanpassen
Overlay-netwerken ondersteunen geavanceerde configuratie, zoals:
$ docker network create \
--driver overlay \
--subnet 10.0.9.0/24 \
--gateway 10.0.9.99 \
--opt encrypted \
my-secure-overlay
--subneten--gatewaydefiniëren de netwerktopologie.--opt encryptedschakelt IPSEC-versleuteling in voor containerverkeer.--scope swarmwordt in swarm-modus automatisch toegepast met de overlay-driver.
De flags --scope en --attachable begrijpen
--scope swarm: Geeft aan dat het netwerk beschikbaar is op alle nodes in de swarm. Alleen swarm-services (geen losse containers) kunnen dit netwerk gebruiken, tenzij--attachableis opgegeven.--attachable: Staat losse containers toe zich bij een swarm-scoped netwerk aan te sluiten. Handig voor debuggen of tijdelijke container-toegang.
Bijvoorbeeld:
$ docker network create \
--driver overlay \
--attachable \
my-dev-overlay
Dit laat je, naast services, ook gewone containers aan een swarm-netwerk koppelen.
Netwerkconfiguratie en validatie
Je moet ervoor zorgen dat je Docker-netwerken correct zijn geconfigureerd om goede communicatie tussen containers te garanderen, de nodige beveiliging te bieden en performante services te leveren. Docker heeft verschillende tools en commando’s om je netwerkconfiguraties te controleren, troubleshooten en valideren.
Verificatie van netwerkconfiguratie
Gebruik het commando docker network inspect om de configuratiedetails van elk Docker-netwerk te bekijken. Je ontvangt gedetailleerde JSON-uitvoer met onder meer:
- Netwerkdriver (
bridge,overlay, enz.) - Subnet- en gatewayconfiguratie
- Scope (
local,swarm) - Verbonden containers en hun IP-adressen
- Interne of externe toegang
- Driver-specifieke opties (bijv. VXLAN-ID’s voor overlay-netwerken)
Je zou bijvoorbeeld zoiets kunnen doen:
$ docker network inspect my-network
Let op sleutelvelden zoals:
- "Driver": Zorgt dat het bedoelde netwerktype is aangemaakt.
- "IPAM": Bevestigt instellingen voor IP-adresbeheer, inclusief custom subnets of gateways.
- "Containers": Toont welke containers zijn gekoppeld en hun toegewezen IP’s.
- "Options": Geeft geavanceerde configuraties weer zoals encryptie (encrypted: true) of MTU-grootte.
Validatietechnieken
Om te bevestigen dat je netwerk werkt zoals verwacht:
- Controleer eerst de IPAM-configuratie. Bekijk de sectie "IPAM" in de output van Docker network inspect. Zorg dat subnet en gateway overeenkomen met je beoogde setup. Verkeerd geconfigureerde subnets kunnen leiden tot connectiviteitsproblemen of IP-conflicten.
- Controleer vervolgens op VXLAN-identifiers (alleen Overlay). Overlay-netwerken gebruiken VXLAN om containerverkeer over meerdere hosts te encapsuleren. Inspecteer de sectie "Options" voor sleutels zoals:
"com.docker.network.driver.overlay.vxlanid_list": "4097"
Dit bevestigt dat de VXLAN-tunnel actief en correct geconfigureerd is. Als dit ontbreekt of onjuist is, zijn services mogelijk niet bereikbaar over nodes heen.
- Test ten slotte inter-containerconnectiviteit. Probeer vanuit de ene container een andere te pingen of te benaderen op containternaam of IP. Dit bevestigt dat DNS-resolutie en interne routing functioneren:
$ docker exec -it container1 ping container2
Controleer DNS-gedrag
Containers die zijn verbonden met door de gebruiker gedefinieerde netwerken gebruiken Docker’s ingebedde DNS-server. Controleer /etc/resolv.conf in de container en test de resolutie van servicenamen.
Valideer gateway-routing
Voor containers op meerdere netwerken kiest Docker de default gateway op basis van de hoogste gw-priority. Wijs expliciete prioriteiten toe tijdens het aanmaken van containers om correcte routing af te dwingen:
$ docker run --network name=public,gw-priority=1 --network private mycontainer
Gebruik logs en diagnosetools
Monitor containerlogs op connectiviteitsfouten, en gebruik tools als curl, dig en ip a binnen containers voor low-level debugging.
Kortom, het valideren van je Docker-netwerkconfiguraties helpt om naadloze containercommunicatie te garanderen en onverwachte storingen in multi-serviceapplicaties te minimaliseren.
En dat brengt ons bij het volgende onderdeel.
Beveiliging en performance-optimalisatie
Echte container-networking draait om meer dan communicatie mogelijk maken. Vaak biedt het de benodigde isolatie terwijl je zorgt dat de performance maximaal is. Bij het beveiligen van je architectuur en het leveren van een service kunnen segmentatie en throughput je daarbij helpen.
Strategieën voor netwerksegmentatie
Netwerksegmentatie is een fundamentele praktijk en beveiligingsmethode voor gecontaineriseerde applicaties. Door containers aan afzonderlijke Docker-netwerken toe te wijzen, kun je doorsnijdende zorgen scheiden, zoals segmentatie voor services met een frontend, een backend en een database. Dit maakt proactieve risicobeperking tegen blootstelling en potentiële aanvallen mogelijk.
Je kunt door de gebruiker gedefinieerde netwerken gebruiken om communicatiegrenzen te beheren. Containers op verschillende netwerken kunnen niet met elkaar communiceren, tenzij je ze expliciet verbindt. Plaats bijvoorbeeld je databasecontainer op een intern netwerk; je publiek toegankelijke services hebben er dan niet rechtstreeks toegang toe.
Ingebouwde firewallregels en controls
Standaard implementeert Docker iptables-regels om communicatie-endpoints tussen containers en de buitenwereld te beperken.
Enkele manieren om deze segmentatie uit te breiden zijn:
- Inter-containercommunicatie uitschakelen op het standaard bridge-netwerk:
{
"icc": false
}
- Voeg dit toe aan de
daemon.jsonvan de Docker-daemon om te voorkomen dat containers communiceren, tenzij ze op hetzelfde door de gebruiker gedefinieerde netwerk zitten. - Beperk mogelijkheden en privileges met vlaggen als
--cap-drop,--read-onlyen--no-new-privileges. - Gebruik overlay-netwerken in Swarm-modus voor versleutelde, gescope servicecommunicatie over meerdere hosts.
Performance-optimalisatietechnieken
Er zijn verschillende manieren om de performance te verbeteren door te optimaliseren met Docker.
Netwerkthroughput verbeteren
De keuze van de juiste netwerkdriver heeft directe impact op de prestaties. Bijvoorbeeld:
- Gebruik de host-driver wanneer low-latency en hoge throughput essentieel zijn en netwerkisolatie geen prioriteit heeft.
- Geef de voorkeur aan bridge voor lokale, geïsoleerde omgevingen.
- Zet macvlan in wanneer containers zich als fysieke apparaten op je netwerk moeten gedragen.
Voorkom overbelasting van het standaard bridge-netwerk en maak aparte netwerken voor zware services of logische groeperingen.
Performanceprofiling met iperf3 en metrics
Meet netwerkprestaties met profilingtools zoals iperf3:
# Start server in container1
docker run -it --rm --name server --network my-net networkstatic/iperf3 -s
# Run client in container2
docker run -it --rm --network my-net networkstatic/iperf3 -c server
Je kunt ook netwerkstatistieken monitoren met:
docker stats– Realtime CPU-, geheugen- en netwerk-I/O.- Prometheus + cAdvisor – Voor time-series metrics en langetermijnmonitoring.
- Aangepaste scripts of agents die
/proc/net/dev-metrics exporteren binnen containers.
Regelmatig profileren helpt knelpunten vroeg te detecteren en beslissingen te sturen over containerplaatsing, driverkeuze of netwerkupgrades van hosts.
Netwerkproblemen oplossen
Zelfs met best practices kunnen netwerkproblemen ontstaan. Ze snel diagnosticeren en oplossen is cruciaal om de uptime van services te behouden. Dit onderdeel biedt tools en technieken om veelvoorkomende Docker-netwerkproblemen te identificeren en te verhelpen.
Netwerkproblemen diagnosticeren
Een minimale container mist vaak tools als ping, dig of netstat, wat troubleshoot lastig maakt. In plaats van de container te wijzigen, start je een nieuwe die de netwerknamespace deelt:
docker run -it --network container:my-container alpine
Installeer daarna netwerktools:
apk add --no-cache iproute2 bind-tools net-tools
Gebruik anders nicolaka/netshoot, een speciaal image vol diagnosetools:
docker run -it --rm --network container:my-container nicolaka/netshoot
Tools als ip, nslookup, netstat en traceroute helpen routing- of DNS-problemen te identificeren.
Connectiviteitsproblemen oplossen
Enkele veelvoorkomende oorzaken en oplossingen:
- DNS-resolutiefouten: Zorg dat de container op een door de gebruiker gedefinieerd netwerk zit om te profiteren van Docker’s ingebedde DNS. Controleer /etc/resolv.conf en gebruik dig of nslookup om naamsresolutie te testen.
- MTU-mismatches: Containers op verschillende netwerken of hosts kunnen pakketverlies hebben door niet-overeenkomende MTU’s. Verlaag de MTU in overlay-netwerken als tunneling wordt gebruikt:
docker network create --driver overlay --opt com.docker.network.driver.mtu=1200 my-overlay
Conflicterende subnets
Vermijd overlappende subnets tussen Docker-netwerken of met de fysieke netwerken van je host. Gebruik --subnet om niet-conflicterende bereiken te definiëren.
Door de hostfirewall geblokkeerde poorten
Zorg dat vereiste Docker-poorten open staan:
- 2377 (Swarm-beheer)
- 7946 TCP/UDP (container discovery)
- 4789 UDP (overlay-data)
Effectief troubleshooten combineert diagnose met een goed begrip van hoe containers met hun netwerken interacteren. Met de juiste tools en aanpak zijn de meeste problemen binnen enkele minuten te isoleren en op te lossen.
Conclusies
Docker-networking is een fundament van gecontaineriseerde architecturen en maakt veilige, efficiënte en schaalbare communicatie tussen services mogelijk, of ze nu op één host draaien of over een gedistribueerd cluster.
Met ingebouwde ondersteuning voor diverse netwerkdrivers, aanpasbaar IP-beheer en Swarm-native overlay-netwerken stelt Docker developers en DevOps-teams in staat workloads te isoleren, datastromen te beheersen en prestaties te optimaliseren in complexe omgevingen.
Het is geen one-size-fits-all-oplossing, maar doordacht ingezet biedt het robuuste mogelijkheden voor het bouwen van moderne microservices, automatiseringspijplijnen en veilige gedistribueerde systemen.
Wil je je Docker- en containerisatievaardigheden verder aanscherpen?
Hier zijn enkele sterke aanbevelingen om je leertraject voort te zetten:
- Introduction to Docker: Begin met de basis van containers en imagemanagement.
- Intermediate Docker: Duik dieper in networking, volumes en multi-containerorkestratie met Docker Compose.
- Introduction to Kubernetes: Leer hoe je containers op schaal uitrolt en beheert met Kubernetes.
- Docker Compose vs Kubernetes: A Detailed Comparison: Begrijp de verschillen en bepaal welke orkestratietool bij je past.
- 10 Docker Project Ideas: From Beginner to Advanced: Pas je skills toe met inspiratie uit de praktijk.
Docker Create Network FAQs
Waarvoor wordt het commando Docker network create gebruikt?
Het wordt gebruikt om aangepaste Docker-netwerken te definiëren en configureren, zodat containers veilig en efficiënt kunnen communiceren.
Wat zijn de belangrijkste typen Docker-netwerkdrivers?
De belangrijkste drivers zijn bridge, host, none, overlay, macvlan en ipvlan, elk met verschillende niveaus van isolatie en connectiviteit.
Wanneer moet ik een overlay-netwerk in Docker gebruiken?
Overlay-netwerken zijn ideaal voor multi-hostcommunicatie, vooral in Docker Swarm- of Kubernetes-omgevingen.
Hoe kan ik valideren of een Docker-netwerk correct is geconfigureerd?
Gebruik Docker network inspect, controleer IPAM- en VXLAN-instellingen en test containerconnectiviteit met ping of DNS-tools.
Welke tools helpen Docker-netwerkproblemen te diagnosticeren?
Tools zoals nicolaka/netshoot, dig, nslookup, iperf3 en containerlogs zijn handig voor het debuggen van veelvoorkomende issues zoals DNS-fouten of MTU-mismatches.
Josep is een freelance Data Scientist die zich richt op Europese projecten, met expertise in dataopslag, -verwerking, geavanceerde analyses en impactvolle data storytelling.
Als docent geeft hij Big Data in de masteropleiding aan de Universiteit van Navarra en deelt hij inzichten via artikelen op platforms als Medium, KDNuggets en DataCamp. Josep schrijft ook over Data en Tech in zijn nieuwsbrief Databites (databites.tech).
Hij heeft een bachelor in Engineering Physics van de Polytechnische Universiteit van Catalonië en een master in Intelligent Interactive Systems van de Pompeu Fabra-universiteit.

