Göra nätverkstjänster tillgängliga i Docker

Docker för medelnivå

Mike Metzger

Data Engineering Consultant

Nätverkstjänster

  • Nätverkstjänster lyssnar på en given port
  • Bara ett program kan lyssna på en IP:port-kombination åt gången
    • Till exempel lyssnar 10.1.2.3:80 på 10.1.2.3 på port 80.
  • Tänk dig att du felsöker olika versioner av en webbserver som lyssnar på port 80
    • Du kan bara köra en kopia av programmet åt gången, eftersom det lyssnar på just den porten
Docker för medelnivå

Containeriserade tjänster

  • Att paketera ett program i en container innebär att varje container kan lyssna på den porten (eftersom IP:port-kombinationen skiljer sig åt har varje container sin egen IP)
  • Flera kopior av containern kan köras samtidigt
  • Men hur ansluter man till containerns version av programmet från värddatorn?
Docker för medelnivå

Portmappning

  • Lösningen är portmappning, även kallat port forwarding eller port translation
  • Portmappning tar en anslutning till en given IP:port och vidarebefordrar den automatiskt till en annan IP:port-kombination
  • Här kan vi mappa en ledig port på värddatorn och peka den mot port 80 på containern/containrarna
  • Docker-motorn kan hantera detta automatiskt om vi konfigurerar det

Exempel på portmappning

Docker för medelnivå

Aktivera portmappning

  • För att aktivera portmappning på en container använder vi kommandot docker run med flaggan -p
  • -p <värdport>:<containerport>
  • -p 5501:80
  • Flera -p-flaggor kan användas för olika portar
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
Docker för medelnivå

Nu kör vi en övning!

Docker för medelnivå

Preparing Video For Download...