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

我在正式回购的Docker容器中运行tomcat。

docker pull tomcat 

并根据主页上指出的我已经运行的实例和Tomcat服务器启动

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

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

 curl localhost:8888 

但是我想从安装在我的PC上的网页浏览器访问这个页面(这是在我的Windows中安装的虚拟盒子之外)。 我可以吗? 如果这样怎么样?

您可能会丢失VirtualBox设置中的端口转发规则。

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

注意最后一项:

在这里输入图像说明

这样,您已经configuration了整个链: hostPort:virtualBoxPort然后virtualBoxPort:containerPort ,如下图所示: 在这里输入图像说明

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

如果您使用的是Docker Tools,

  1. 使用$ docker-machine ls查找docker机器名称
  2. 使用$ docker-machine ip <machine-name>查找docker的IP地址
  3. 使用IP地址连接,例如$ curl 192.168.99.100

运行boot2docker ip来获取你的docker桥的IP地址。 然后你可以运行curl BRIDGE_IP:8888 IP将是类似于192.168.59.103。 对于boot2docker,虚拟机networking堆栈不是您的本地主机,而是在虚拟接口上运行。

使用docker-machine ls来获取运行容器的Virtual Box实例的IP地址。 然后用你的公开的相关端口,在我的情况下8080,所以它是http://192.168.99.100:8080

选项-p有参数hostPort:containerPort所以在你的情况下,端口8080(在你的docker镜像里)被映射到主机上的端口8888(你的windows机器)。 这意味着你应该能够在你的Windows机器上findtomcat,把:8888附加到你的URL上,就像你用curl一样。