CodeGym /Kurse /Docker SELF /Portweiterleitung

Portweiterleitung

Docker SELF
Level 12 , Lektion 1
Verfügbar

7.1 Grundlagen der Port-Weiterleitung (Port forwarding)

Port-Weiterleitung ist eine wichtige Funktion von Docker, die es ermöglicht, dass Anwendungen innerhalb von Containern von außen zugänglich sind. Diese Funktion wird benötigt, um sich mit Webservern, Datenbanken oder anderen Diensten zu verbinden, die in Containern laufen, sei es von der Host-Maschine oder sogar aus anderen Netzwerken.

Standardmäßig arbeiten Container in einem isolierten Netzwerk. Damit ein Dienst im Container zugänglich ist, leitet Docker die Ports des Containers auf Ports der Host-Maschine weiter.

Für die Port-Weiterleitung wird der Parameter -p oder --publish des Befehls docker run verwendet.

Syntax


docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]

Wo:

  • HOST_PORT: Port auf der Host-Maschine, über den der Traffic läuft.
  • CONTAINER_PORT: Port innerhalb des Containers, auf den der Traffic weitergeleitet wird.
  • OPTIONS: zusätzliche Parameter zur Konfiguration des Containers.
  • IMAGE: Image, aus dem der Container erstellt wird.
  • COMMAND: Befehl, der innerhalb des Containers ausgeführt wird.
  • ARG...: Argumente für den Befehl.

Ein einfaches Beispiel

In diesem Beispiel wird Port 80 des Containers, in dem ein Nginx-Webserver läuft, auf den Port 8080 der Host-Maschine weitergeleitet. Danach kannst du den Webserver im Browser unter http://localhost:8080 öffnen.


docker run -d -p 8080:80 nginx

7.2 Andere Optionen der Portweiterleitung

1. Mehrfache Portweiterleitung

Docker ermöglicht es, mehrere Ports gleichzeitig weiterzuleiten. Dafür werden mehrere -p-Optionen verwendet.

Beispiel

In diesem Beispiel wird der Port 80 des Containers auf den Port 8080 des Hosts weitergeleitet und der Port 443 des Containers auf den Port 8443 des Hosts.



docker run -d -p 8080:80 -p 8443:443 nginx

2. Portweiterleitung mit spezifischer IP-Adresse

Du kannst eine spezifische IP-Adresse angeben, an die der weitergeleitete Port gebunden wird. Das ist besonders nützlich, wenn die Host-Maschine mehrere Netzwerkschnittstellen hat und der Zugriff auf den Container eingeschränkt werden soll.

Beispiel:

In diesem Beispiel wird der Port 80 des Containers auf den Port 8080 nur auf der Schnittstelle 127.0.0.1 der Host-Maschine weitergeleitet. Das bedeutet, dass der Zugriff auf den Service nur von der Host-Maschine selbst aus möglich ist.


docker run -d -p 127.0.0.1:8080:80 nginx

3. Weiterleitung eines Portbereichs

Wenn mehrere Ports gleichzeitig weitergeleitet werden sollen, unterstützt Docker die Arbeit mit Portbereichen.

Beispiel:

In diesem Beispiel werden die Ports von 7000 bis 8000 des Containers auf die Ports von 7000 bis 8000 der Host-Maschine weitergeleitet.


docker run -d -p 7000-8000:7000-8000 someimage

7.3 Praktische Anwendungsfälle

1. Zugriff auf einen Webserver

Portweiterleitung wird häufig verwendet, um Zugriff auf Webserver zu schaffen, die innerhalb von Containern laufen.


docker run -d -p 8080:80 nginx 

Nach dem Ausführen dieses Befehls wird der Nginx-Webserver, der auf Port 80 des Containers läuft, auf Port 8080 der Host-Maschine verfügbar.

2. Zugriff auf eine Datenbank

Portweiterleitung ist auch nützlich, um auf Datenbanken zuzugreifen, die innerhalb von Containern laufen.


docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres

In diesem Beispiel wird PostgreSQL, das auf Port 5432 des Containers läuft, auf Port 5432 der Host-Maschine zugänglich gemacht.

3. Testen und Entwicklung

Docker-Container werden oft genutzt, um isolierte Testumgebungen zu schaffen. Portweiterleitung ermöglicht es Entwicklern, Anwendungen so zu starten und zu testen, als würden sie in einer echten Produktionsumgebung laufen.


docker run -d -p 8080:80 -p 8443:443 myapp

In diesem Beispiel wird die Anwendung auf den Ports 8080 und 8443 getestet, was den Standardports in einer Produktionsumgebung entspricht.

7.4 Zusätzliche Empfehlungen

1. Schutz der Ports

Wenn du Ports weiterleitest, vergiss die Sicherheit nicht. Offene Ports können Ziel von Angriffen werden. Leite nur die Ports weiter, die wirklich benötigt werden, und verwende eine Firewall, um den Zugriff einzuschränken.

2. Firewalls und NAT

Um den Schutz zu erhöhen und den Traffic zu steuern, verwende Firewalls und Network Address Translation (NAT). Das ermöglicht es dir, den Zugriff auf deine Dienste einzuschränken und Netzwerkverbindungen zu kontrollieren.

3. Monitoring und Logs

Richte Monitoring und Log-Sammlung ein, um den Traffic auf weitergeleiteten Ports zu überwachen. Das hilft dir, verdächtige Aktivitäten schneller zu erkennen und darauf zu reagieren.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION