Sie können nicht. Welche Ports auf dem Docker-Host veröffentlicht werden, ist ausschließlich eine Entscheidung, die vom lokalen Administrator getroffen werden sollte, nicht von dem Image, das sie ausführen möchten. Das wäre (a) ein Sicherheitsproblem (hey, ich habe gerade den SSH-Zugriff auf Ihr System geöffnet!) und (b) anfällig für Fehler (mein Webserver-Container kann nicht an Port 80 binden, weil ich bereits einen Server auf dem Server betreibe Port 80).
Wenn Sie lange docker run
Befehlszeilen vermeiden möchten, sollten Sie den Prozess mit etwas wie docker-compose automatisieren. Sie können dann passieren Docker-komponieren eine Konfiguration wie:
mywebserver:
image: myname/mywebserver
ports:
- 80:8080
Und dann ein einfaches docker-compose up
Ihre Container mit Containerhafen 8080 gebunden Host-Port 80.
aktualisieren 2017.03.11 starten
Als Reaktion auf Willa Kommentar:
docker-compose
Verwendung wird nicht h elp mit dem Port-Kollisionsproblem. Das Port-Kollisionsproblem ist ein Grund, warum Bilder Host-Port-Bindungen nicht angeben dürfen. Ich bot einfach docker-compose
als Alternative zu langen docker run
Befehlszeilen mit mehreren Portbindungen an. Das Port-Kollisionsproblem würde es einem Container potenziell ermöglichen, einen Denial-of-Service-Angriff auf Ihren Host auszuführen: Wenn beispielsweise ein Container vor einem Apache-Server auf Ihrem Host (oder in einem anderen Container) gestartet und an Port 80 gebunden wird, dann Sie haben gerade Ihren Webservice verloren.
Zum Sicherheitsproblem: Wenn ein Image Host-Port-Bindungen angeben kann, können Container ohne Ihr Wissen Zugriff auf den Container eröffnen. Wenn Sie einem Remote-Benutzer den Zugriff auf einen Container auf Ihrem Host erlauben, können Sie eine Host-Kompromittierung durchführen, falls die Namespace-Funktionen im Kernel den Container nicht vollständig isolieren und selbst wenn Sie der Isolation völlig vertrauen zu möglichen rechtlichen Problemen, wenn dieser Behälter für illegale Zwecke verwendet wird. In jedem Fall ist es eine schlechte Idee.
Danke! das hilft –
Wie funktioniert das Verwenden von docker-compose das Potenzial für Port-Kollision obwohl? Außerdem können Sie etwas zum Sicherheitsproblem erklären? – Willa