Netzwerkdienste in Docker verfügbar machen

Docker für Fortgeschrittene

Mike Metzger

Data Engineering Consultant

Netzwerkdienste

  • Netzwerkdienste lauschen auf einem bestimmten Port
  • Pro Zeitpunkt kann nur ein Programm auf einer IP:Port-Kombination lauschen
    • Beispiel: 10.1.2.3:80 lauscht auf 10.1.2.3 am Port 80.
  • Stell dir vor, du willst verschiedene Versionen eines Webservers debuggen, der auf Port 80 lauscht
    • Du könntest nur eine Instanz gleichzeitig ausführen, da er nur auf diesem Port hört
Docker für Fortgeschrittene

Containerisierte Dienste

  • Packst du die Anwendung in einen Container, kann jeder Container auf diesem Port lauschen (die IP:Port-Kombination ist unterschiedlich, da jeder Container eine eigene IP hat)
  • So können mehrere Containerkopien gleichzeitig laufen
  • Aber wie verbindest du dich vom Host zur Container-Version der Anwendung?
Docker für Fortgeschrittene

Port-Mapping

  • Die Lösung heißt Port-Mapping, auch Port-Weiterleitung/-Übersetzung
  • Port-Mapping nimmt eine Verbindung zu einer IP:Port und leitet sie automatisch an eine andere IP:Port-Kombination weiter
  • Hier könnten wir einen ungenutzten Host-Port auf Port 80 im Container abbilden
  • Die Docker-Engine kann das automatisch übernehmen, wenn wir es konfigurieren

Port-Mapping-Beispiel

Docker für Fortgeschrittene

Port-Mapping aktivieren

  • Um Port-Mapping für einen Container zu aktivieren, verwenden wir docker run mit dem Flag -p
  • -p <Host-Port>:<Container-Port>
  • -p 5501:80
  • Für verschiedene Ports kannst du mehrere -p-Flags angeben
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 Fortgeschrittene

Lass uns üben!

Docker für Fortgeschrittene

Preparing Video For Download...