web-dev-qa-db-de.com

Wie kann ich über einen Browser auf Tomcat zugreifen, der im Docker-Container ausgeführt wird?

Ich verwende Tomcat in meinem Docker-Container vom offiziellen Repo.

docker pull Tomcat

Und gemäß den in der Homepage angegebenen Richtlinien habe ich die Instanz ausgeführt und der Tomcat-Server wird gestartet

docker run -it --rm -p 8888:8080 Tomcat:8.0

Auf dem Port 8888 ist ein Tomcat-Server verfügbar. Ich kann die Antwort in boot2docker abrufen, wenn ich den folgenden Befehl ausführen

curl localhost:8888

Ich möchte jedoch auf die Seite von meinem Webbrowser aus zugreifen, der auf meinem PC installiert ist (der sich außerhalb der Virtual Box befindet, die in meinem Windows installiert ist). Kann ich? Wenn das so ist, wie?

22
JavaTechnical

Möglicherweise fehlt eine Portweiterleitungsregel in den VirtualBox-Einstellungen.

boot2docker vm > settings > Network > NAT adapter > Port forwarding

Notiere den letzten Eintrag:

enter image description here

Auf diese Weise haben Sie die gesamte Kette konfiguriert: hostPort:virtualBoxPort und dann virtualBoxPort:containerPort, wie in der folgenden Abbildung dargestellt: enter image description here

22
tduchateau

Es scheint, dass es eine bessere Antwort gibt, seit Docker-Tools vor einigen Monaten eingeführt wurde. Wenn Sie Docker Tools nicht verwenden, schauen Sie unter https://docs.docker.com/machine nach.

Wenn Sie Docker Tools verwenden, 

  1. finden Sie den Docker-Rechnernamen mit $ docker-machine ls
  2. finden Sie die Docker-IP-Adresse mit $ docker-machine ip <machine-name>
  3. verwenden Sie die IP-Adresse zum Verbinden, z. $ curl 192.168.99.100
7
Kay V

führen Sie boot2docker ip aus, um die IP Ihrer Docker Bridge abzurufen. Dann können Sie curl BRIDGE_IP:8888.__ ausführen. Die IP wird etwa 192.168.59.103 sein. Bei boot2docker ist der Netzwerkstack der VM nicht Ihr lokaler Host, sondern läuft auf einer virtuellen Schnittstelle.

3
Usman Ismail

Verwenden von docker-machine ls zum Abrufen der IP-Adresse der Virtual Box-Instanz, die den Container ausführt. Verwenden Sie dann den zugeordneten Port, den Sie freigelegt haben, in meinem Fall 8080, sodass es http://192.168.99.100:8080 war.

1
joenova

option -p hat das Argument hostPort:containerPort. In Ihrem Fall wird Port 8080 (in Ihrem Docker-Image) Port 8888 auf dem Host (Ihrer Windows-Box) zugeordnet. Dies bedeutet, dass Sie Tomcat in Ihrer Windows-Box finden können, indem Sie :8888 an Ihre URL anhängen, genau wie bei curl.

0
geert3