Ich habe Docker Container für Experimente. Daher weiß ich nicht, welche Ports ich später verwenden werde, wenn ich neue Apps ausprobiere. Ist es nicht möglich, mit dem ip/port auf den docker container application zuzugreifen, ohne ihn im docker-run-Befehl anzuzeigen?Docker Access Container IP/Port direkt
Antwort
Docker für Mac kann den Datenverkehr nicht zu Containern und von Containern zurück zum Host leiten.
https://docs.docker.com/docker-for-mac/networking/#i-cannot-ping-my-containers
Update: das OP nicht bieten, dass es über docker-for-mac
in der ursprünglichen Frage war, so kann der Rest nicht angewendet werden, wenn Sie diese Version von Docker verwenden.
Ursprüngliche Antwort:
Ja, können Sie das tun.
Nehmen wir an, Sie haben einen Container namens boring_pare
und eine Webanwendung, die auf Port 8080
ausgeführt wird. Sie können auf von Ihrem Host-Computer zugreifen, indem Sie http://[ip_of_boring_pare]:8080
anfordern. Wenn Sie das Standard-Andocknetzwerk verwenden, befindet sich diese IP-Adresse wahrscheinlich im Bereich 172.17.0.xxx
.
diese IP zu finden, können Sie Ihre Behälter unter Verwendung inspect
können:
docker container inspect boring_pare
Auch erwähnen Sie:
Ist es nicht möglich, mit IP-Docker-Container-Anwendung zugreifen/Port vom Host ohne ausgesetzt es in den Docker-run-Befehl?
Der korrekte Begriff hier wäre Veröffentlichung. Weiterführende Literatur:
Documentation über
EXPOSE
/Dockerfile... Die
EXPOSE
Anweisung veröffentlichen nicht wirklich den Hafen. Es fungiert als eine Art Dokumentation zwischen der Person, die das Image erstellt, und der Person, die den Container ausführt, über welche Ports veröffentlicht werden sollen. Um den Port bei der Ausführung des Containers tatsächlich zu veröffentlichen, verwenden Sie das Flag-p
unterdocker run
, um einen oder mehrere Ports zu veröffentlichen und zuzuordnen, oder das Flag-P
, um alle exponierten Ports zu veröffentlichen und sie den Ports höherer Ordnung zuzuordnen.
aktualisieren-@robie2011 ‚s Kommentar zu beantworten:
Unten laufen I 3 Befehle:
- betreiben ein
nginx
Behälter ohneport 80
zu einemhost
Port Veröffentlichung - seine inspizieren
ip address
- Verwendung
curl
vonhost
für den Zugriff auf dienginx
Startseite
Meine Konsolenausgabe:
$ docker run --rm --name some-nginx -d nginx
0e53d3b5ef6d65a4731c4066f3523c5ecd3c118abedae44b33e89fdf8e401632
$ docker container inspect --format '{{ .NetworkSettings.IPAddress }}' some-nginx
172.17.0.3
$ curl 172.17.0.3
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
$
Hat in meinem Fall nicht funktioniert. Hier zwei Beispiele: 'docker run --name some-nginx -d nginx' hier ist der beweis, dass dies auf port 80 funktionieren sollte ' docker run -p9999: 80 --name einige-nginx2 -d nginx' – robie2011
@ robie2011 I am Ende meiner Antwort hinzugefügt die Ergebnisse, die ich bekomme, wenn ich 'curle' von' Host' in den 'container' von Ihrem ersten Befehl ausgeführt. – tgogos
Ich folgte deinen Schritten, aber es funktionierte nicht für mich. Im mit Macosx und haben folgende Laufzeit https://pastebin.com/q866LHRc vielleicht ist es ein Mac-Problem? – robie2011
- 1. Zugriff auf Container direkt
- 2. Windows Docker Container vs Linux Docker Container
- 3. Docker im Docker Container
- 4. Access-Datei von Windows-Maschine von Docker Container
- 5. Docker "config" Container/Docker image
- 6. Docker Befehl in Docker Container
- 7. MySQL in Docker Container
- 8. Docker Container fehlgeschlagen
- 9. Docker-Container-Netzwerk mit Docker-in-Docker
- 10. ERR_CONNECTION_REFUSED von Docker Container
- 11. Vagrant ssh Docker Container
- 12. Zugriff auf Wildfly-Docker-Container von Apache-Docker-Container
- 13. Dummy Docker Container zum Benchmarking
- 14. Docker Container Kommunikation über http
- 15. docker swarm access service
- 16. Docker Volume Access Error
- 17. Docker Container verknüpfen
- 18. Docker Container Host Routing
- 19. Docker-Container-spezifisches Festplattenkontingent
- 20. docker container ssl certificates
- 21. Docker Container und Speicherverbrauch
- 22. Docker Container Disaster Recovery
- 23. Langsamkeit in Docker Container
- 24. VSTS - Docker/Container Jobs
- 25. Docker binden Host Container
- 26. Docker-Container läuft nicht
- 27. Docker-Container Neustart
- 28. Docker Container UUID
- 29. Docker Container Hosting
- 30. Separate MySQL Docker Container
Im Grunde wollen Sie in Laufbehälter rechts neuen Hafen entlarven? Hier ist die entsprechende Diskussion im Dockerforum. Ich habe einige von ihnen ausprobiert und finde sie gut. https://forums.docker.com/t/how-to-expose-port-on-running-container/3252/14 – Apolozeus