如何从浏览器访问在docker容器中运行的tomcat?

时间:2014-12-14 16:59:56

标签: tomcat docker containers virtualbox

我正在官方回购的码头工作箱中运行tomcat。

docker pull tomcat

根据homepage中所述的指导原则,我运行实例并启动Tomcat服务器

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

端口8888上有Tomcat服务器。当我执行以下命令时,我能够在 boot2docker 中获得响应

curl localhost:8888

但是我想从我的PC中安装的Web浏览器访问该页面(这是在Virtual Box之外,我的Windows中安装的那个)。我可以吗?如果是这样的话?

5 个答案:

答案 0 :(得分:24)

您可能在VirtualBox设置中缺少端口转发规则。

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

请注意最后一项:

enter image description here

这样您就可以配置整个链:hostPort:virtualBoxPort然后virtualBoxPort:containerPort,如下图所示: enter image description here

答案 1 :(得分:8)

自几个月前推出Docker-Tools以来,似乎有更好的答案。如果您不使用Docker Tools,请查看https://docs.docker.com/machine

如果您使用的是Docker Tools,

  1. 使用$ docker-machine ls
  2. 查找泊坞机名称
  3. 使用$ docker-machine ip <machine-name>
  4. 查找docker IP地址
  5. 使用ip地址进行连接,例如$ curl 192.168.99.100

答案 2 :(得分:3)

运行boot2docker ip以获取docker bridge的IP。然后你可以运行curl BRIDGE_IP:8888 IP将类似于192.168.59.103。使用boot2docker,VM网络堆栈不是您的本地主机,而是在虚拟接口上运行。

答案 3 :(得分:1)

使用docker-machine ls获取运行容器的Virtual Box实例的IP。然后将其与您公开的关联端口一起使用,在我的情况下为8080,因此它是http://192.168.99.100:8080

答案 4 :(得分:0)

选项-p具有参数hostPort:containerPort所以在您的情况下,端口8080(在泊坞窗图像内)映射到主机上的端口8888(您的窗口框)。这意味着您应该可以通过将:8888附加到您的网址来在Windows框中找到tomcat,就像您使用curl一样。