Einen veröffentlichten Port hinzufügen oder entfernen
In diesem Schritt lernen Sie, wie Sie einen veröffentlichten Port für einen Docker-Service hinzufügen oder entfernen können. Das Veröffentlichen eines Ports macht einen Port innerhalb des Containers von außerhalb des Docker Swarm-Clusters zugänglich. Dies ist essentiell, um Ihre Anwendung für Benutzer oder andere Services zugänglich zu machen.
Unser aktueller my-service
hat keine veröffentlichten Ports, da er einfach nur einen einfachen echo
-Befehl ausführt und dann beendet. Um das Veröffentlichen von Ports zu demonstrieren, erstellen wir einen neuen Service, der einen einfachen Webserver ausführt. Wir verwenden dafür das nginx
-Image.
Zuerst laden wir das nginx
-Image herunter:
docker pull nginx
Jetzt erstellen wir einen neuen Service namens web-service
und veröffentlichen Port 80 des Containers auf Port 8080 des Hosts.
docker service create --name web-service --publish 8080:80 nginx
Dieser Befehl erstellt einen Service namens web-service
unter Verwendung des nginx
-Images. Die Option --publish 8080:80
bildet Port 80 innerhalb des Containers auf Port 8080 des Hosts ab.
Sie sollten eine Ausgabe sehen, die die Service-ID anzeigt.
Um zu überprüfen, ob der Port veröffentlicht wurde, können Sie den Service untersuchen:
docker service inspect web-service
Suchen Sie im Ausgabeergebnis nach dem Abschnitt EndpointSpec
. Sie sollten einen Eintrag unter Ports
sehen, der die veröffentlichte Portzuordnung anzeigt (z. B. PublishedPort: 8080
, TargetPort: 80
).
Jetzt entfernen wir den veröffentlichten Port aus dem web-service
. Dies können wir mit dem Befehl docker service update
und der Option --publish-rm
tun, wobei wir den Zielport innerhalb des Containers angeben.
docker service update --publish-rm 80 web-service
Dieser Befehl entfernt die Portzuordnung für Port 80 innerhalb des Containers.
Sie sollten eine Ausgabe sehen, die anzeigt, dass der Service aktualisiert wurde.
Um zu überprüfen, ob der Port entfernt wurde, untersuchen Sie den Service erneut:
docker service inspect web-service
Der Abschnitt EndpointSpec
sollte die Portzuordnung, die Sie gerade entfernt haben, nicht mehr anzeigen.