如何从浏览器访问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,
- 使用
$ docker-machine ls
查找docker机器名称 - 使用
$ docker-machine ip <machine-name>
查找docker的IP地址 - 使用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一样。