4.1 Hauptkonzepte zur Veröffentlichung von Ports
Die Veröffentlichung von Ports bei Containern in Docker ermöglicht es, dass Dienste, die innerhalb der Container laufen, aus einem externen Netzwerk oder vom Host zugänglich sind. Das ist ein wichtiger Teil der Konfiguration von Multi-Container-Anwendungen, da es die Interaktion mit Diensten wie Webservern, Datenbanken und anderen Netzwerk-Anwendungen erlaubt. In dieser Vorlesung schauen wir uns an, wie man Container-Ports veröffentlicht und den Zugriff auf Services konfiguriert.
Hauptkonzepte zur Veröffentlichung von Ports
- Port-Mapping: Zuordnung eines Host-Ports zu einem Container-Port.
- Parameter
-p/--publish
: wird verwendet, um das Port-Mapping beim Starten eines Containers anzugeben. - Parameter
-P/--publish-all
: automatische Zuweisung von Host-Ports für alle exportierten Ports eines Containers.
Beispiel für die Nutzung des Parameters -p
Beim Starten eines Containers kannst du die Option -p
verwenden, um ein Mapping vom Host-Port zu einem Container-Port festzulegen. Format des Befehls:
docker run -d -p <host_port>:<container_port> <image>
Beispiel 1: Veröffentlichung des Ports eines Nginx-Webservers
Wir starten einen Container mit Nginx und veröffentlichen den Port 80 des Containers auf dem Host-Port 8080.
Jetzt ist Nginx unter http://localhost:8080 zugänglich.
docker run -d -p 8080:80 --name mynginx nginx
Beispiel 2: Veröffentlichung mehrerer Ports
Du kannst mehrere Ports veröffentlichen, indem du mehrere -p
-Optionen angibst.
In diesem Beispiel ist Nginx über HTTP auf Port 8080 und über HTTPS auf Port 8443 zugänglich.
docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx
Beispiel für die Nutzung des Parameters -P
Der Parameter -P
veröffentlicht automatisch alle in der Dockerfile oder in den Container-Einstellungen angegebenen Ports auf zufällige Host-Ports.
Beispiel:
docker run -d -P --name mynginx nginx
Um herauszufinden, welche Ports zugewiesen wurden, kannst du den Befehl docker port
verwenden:
docker port mynginx
Die Ausgabe wird ungefähr so aussehen:
80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769
4.2 Veröffentlichung von Ports in Docker Compose
Um Ports in Docker Compose zuzuweisen, nutze die Direktive ports
in der Datei docker-compose.yml
.
Beispiel für eine docker-compose.yml
-Datei
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
Starte Docker Compose:
docker compose up -d
Jetzt ist Nginx unter den Adressen http://localhost:8080 und https://localhost:8443 verfügbar.
4.3 Zusätzliche Parameter für die Veröffentlichung von Ports
1. Einschränkung der IP-Adresse
Du kannst den Zugriff auf einen Container-Port einschränken, indem du die IP-Adresse des Hosts angibst.
Beispiel:
In diesem Beispiel ist Nginx nur vom lokalen Host unter der Adresse http://127.0.0.1:8080 erreichbar.
docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx
2. Verwendung eines Portbereichs
Du kannst einen Bereich von Ports zur Veröffentlichung angeben.
Beispiel:
docker run -d -p 8080-8081:80-81 --name mynginx nginx
Praktische Tipps:
- Nur notwendige Ports veröffentlichen: Veröffentliche nur die Ports, die wirklich für den Zugriff auf Dienste benötigt werden, um potenzielle Schwachstellen zu minimieren.
- Verwendung einer Firewall: Richte eine Firewall ein, um den Zugriff auf veröffentlichte Ports nur von vertrauenswürdigen IP-Adressen zu beschränken.
- Überwachung und Protokollierung: Nutze Überwachungs- und Protokollierungs-Tools, um den Zugriff auf veröffentlichte Ports zu verfolgen und verdächtige Aktivitäten zu erkennen.
GO TO FULL VERSION