Netwerkservices beschikbaar maken in Docker

Docker voor gevorderden

Mike Metzger

Data Engineering Consultant

Netwerkservices

  • Netwerkservices luisteren op een poort
  • Slechts één programma kan tegelijk op een IP:poort-combinatie luisteren
    • Bijvoorbeeld: 10.1.2.3:80 luistert op 10.1.2.3, poort 80.
  • Stel dat je verschillende versies van een webserver op poort 80 wilt debuggen
    • Je kunt maar één copy tegelijk draaien, omdat die alleen op die poort luistert
Docker voor gevorderden

Geccontaineriseerde services

  • Een app in een container verpakken betekent dat elke container op die poort kan luisteren (IP:poort is anders; elke container heeft een eigen IP)
  • Je kunt meerdere containers tegelijk draaien
  • Maar hoe verbind je vanaf de host met de app in de container?
Docker voor gevorderden

Poortmapping

  • Het antwoord is poortmapping, ook wel port forwarding/translation
  • Poortmapping neemt een verbinding naar een IP:poort en stuurt die door naar een andere IP:poort-combinatie
  • We kunnen een ongebruikte hostpoort mappen naar poort 80 op de container(s)
  • De Docker-engine kan dit automatisch afhandelen als je het configureert

Voorbeeld van poortmapping

Docker voor gevorderden

Poortmapping inschakelen

  • Om poortmapping te gebruiken met een container, gebruik je docker run met de vlag -p
  • -p <hostpoort>:<containerpoort>
  • -p 5501:80
  • Je kunt meerdere -p-vlaggen opgeven voor verschillende poorten
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 voor gevorderden

Laten we oefenen!

Docker voor gevorderden

Preparing Video For Download...