Dockers nätverkslägen
Utforska Dockers olika nätverksdrivrutiner (bridge, host, overlay) och förstå deras konsekvenser för containerkommunikation.
Dockers nätverkslägen är en gratis lektion i Linux-nätverk och TCP/IP för utvecklare på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Linux-nätverk och TCP/IP för utvecklare, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Linux-nätverk och TCP/IP för utvecklare innehåller totalt 4 lektioner.
Containers måste kommunicera!
Docker-containrar är isolerade som standard, men behöver ofta kommunicera med varandra eller med omvärlden. Docker tillhandahåller olika nätverksdrivrutiner för att hantera detta.
Drivrutinerna definierar hur containrar ansluter till varandra och till värddatorns nätverk, vilket säkerställer korrekt kommunikation och isolering.
Standarden: bridge-nätverk
När du inte anger något nätverk använder Docker automatiskt standardnätverket bridge. Se det som en virtuell växel som Docker skapar på värddatorn.
Varje container som ansluts till detta nätverk får en egen IP-adress och kan kommunicera med andra containrar på samma nätverk via deras IP-adresser.
Standardnätverket bridge i praktiken
Vi ska undersöka standardnätverket bridge och se en container som är ansluten till det. Det visar hur Docker tilldelar IP-adresser inom detta virtuella nätverk.
Kör dessa kommandon för att se standardnätverket bridge och en containers IP-adress.
docker network ls
docker run -d --name mynginx nginx
docker inspect --format='{{.NetworkSettings.IPAddress}}' mynginx
docker stop mynginx
docker rm mynginxDela värddatorns nätverk
Värdnätverksläget tar bort nätverksisoleringen mellan containern och värddatorn. Containern använder direkt värddatorns nätverksstack.
Det innebär att containerns portar exponeras direkt på värddatorns IP-adress utan någon portmappning. Det ger hög prestanda men minskar isoleringen avsevärt.
Demonstration av värdläge
När en container körs i värdläge blir den i praktiken ytterligare en process på värddatorns nätverk. Dess nätverksgränssnitt och IP-adresser motsvarar värddatorns.
Kör det här kommandot för att se en containers nätverksinformation i värdläge och jämföra den med värddatorns nätverkskonfiguration.
docker run --rm --network host alpine ip a
# Compare with your host's `ip a` output!Flera värddatorer: overlay
Overlay-nätverk är utformade för kommunikation mellan containrar på flera värddatorer och används vanligtvis i Docker Swarm- eller Kubernetes-kluster.
De gör det möjligt för containrar på olika fysiska eller virtuella datorer att kommunicera sömlöst som om de befann sig i samma lokala nätverk. Detta är viktigt för distribuerade applikationer.
Anpassa dina bridge-nätverk
Standardnätverket bridge är användbart, men användardefinierade bridge-nätverk är bästa praxis. De har flera fördelar jämfört med standardnätverket bridge:
- Bättre isolering: Håller applikationens nätverk separat.
- Automatisk DNS: Containrar kan hitta varandra med namn, inte bara IP-adress!
- Portabilitet: Det blir enklare att flytta applikationer mellan värddatorer.
Skapa ett anpassat bridge-nätverk
Vi ska skapa ett eget anpassat bridge-nätverk och ansluta containrar till det. Observera hur containrar på samma användardefinierade bridge-nätverk kan hitta varandra med hjälp av containernamnen.
Det gör kommunikationen mellan containrar mycket enklare och robustare.
docker network create myapp_network
docker run -d --name myapp_server --network myapp_network alpine/git sh -c "while true; do echo 'Hello from server!' | nc -l -p 8080; done"
docker run --rm --network myapp_network alpine/git sh -c "apk add --no-cache netcat-openbsd && sleep 2 && nc myapp_server 8080"
docker stop myapp_server
docker rm myapp_server
docker network rm myapp_networkContainrar kommunicerar med namn
I det föregående exemplet anslöt klientcontainern till myapp_server med hjälp av dess containernamn. Detta är en viktig fördel med användardefinierade bridge-nätverk.
Dockers inbyggda DNS-tjänst översätter automatiskt containernamn till deras IP-adresser inom det anpassade nätverket, vilket förenklar tjänsteidentifiering.
Testa dina kunskaper!
Vilka av följande påståenden om Dockers nätverkslägen är sanna?
Docker-nätverk: en snabb genomgång
Vi har utforskat viktiga Docker-nätverkslägen som möjliggör kommunikation mellan containrar:
- Bridge: Standardläget för kommunikation mellan containrar på en värddator.
- Host: Containern delar värddatorns nätverksstack för hög prestanda men sämre isolering.
- Overlay: För kommunikation mellan flera värddatorer i klustrade miljöer som Docker Swarm.
- User-Defined Bridge: Bästa praxis för anpassade applikationsnätverk, med isolering och automatisk DNS-översättning via namn.
Att förstå dessa lägen är viktigt när du utformar robusta och skalbara containeriserade applikationer.
Lär dig Linux-nätverk och TCP/IP för utvecklare med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Dockers nätverkslägen” gratis?
Ja – hela texten till ”Dockers nätverkslägen” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Linux-nätverk och TCP/IP för utvecklare, kan Ni uppgradera till CoddyKit PRO. Kursen i Linux-nätverk och TCP/IP för utvecklare innehåller totalt 4 lektioner.
Vad lär jag mig i ”Dockers nätverkslägen”?
Utforska Dockers olika nätverksdrivrutiner (bridge, host, overlay) och förstå deras konsekvenser för containerkommunikation. Ni övar på Linux-nätverk och TCP/IP för utvecklare med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Linux-nätverk och TCP/IP för utvecklare?
Du behöver inga förkunskaper. Utbildningen i Linux-nätverk och TCP/IP för utvecklare på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Dockers nätverkslägen”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Linux-nätverk och TCP/IP för utvecklare-lektionen?
Ja. Varje Linux-nätverk och TCP/IP för utvecklare-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Dockers nätverkslägen
- Grunderna i Kubernetes-nätverk
- Nätverkspolicyer i containrar
- Tjänsteupptäckt och DNS i Kubernetes