【问题标题】:How to access tomcat running in docker container from browser?如何从浏览器访问在 docker 容器中运行的 tomcat?
【发布时间】:2015-02-12 19:40:17
【问题描述】:

我正在我的 docker 容器中运行来自 Official Repo 的 tomcat。

docker pull tomcat

按照homepage 中所述的指导方针,我已经运行了实例并启动了 Tomcat 服务器

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

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

curl localhost:8888

但我想从安装在我的 PC 中的网络浏览器访问该页面(它不在虚拟盒中,即安装在我的 Windows 中的那个)。我可以吗?如果有怎么办?

【问题讨论】:

    标签: tomcat docker containers virtualbox


    【解决方案1】:

    使用docker-machine ls 获取运行容器的Virtual Box 实例的IP。然后将它与您公开的相关端口一起使用,在我的例子中是 8080,所以它是http://192.168.99.100:8080。

    【讨论】:

      【解决方案2】:

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

      如果你使用的是 Docker 工具,

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

      【讨论】:

        【解决方案3】:

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

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

        注意最后一个条目:

        这样你就配置了整个链:hostPort:virtualBoxPort然后virtualBoxPort:containerPort,如下图所示:

        【讨论】:

        • 太棒了!谢谢 :) 因此,以类似的方式继续使用新端口,我们需要将它们添加到端口转发规则中。我对吗?顺便问一下,Host Port 和 Guest Port 是什么?
        • 您可以更新 start.sh Shell 脚本(随 Boot2Docker 安装提供),以便一劳永逸地设置所需的端口转发规则。参见例如github.com/docker/docker/issues/4007#issuecomment-34573044。否则,您可以如上所述手动添加它们。
        • Host port 是您机器(PC)上的端口。 guest port 是 VM (VirtualBox) 的端口。
        • 我刚刚添加了一个图表以进行澄清。希望它足够自我解释:-)
        • 仅供参考,不知道如何添加它的人。开始 -> virtualbox -> 点击你的盒子 -> 设置 -> 网络 -> 端口转发,然后你可以添加上面的设置。
        【解决方案4】:

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

        【讨论】:

        • Failed to get VM Host only IP Address. Was the VM initialized using boot2docker? 我收到此错误。
        • 我已经修改了 start.sh 文件并以某种方式设法获取了 IP 地址,但我仍然无法在浏览器中打开 192.168.59.105:8888,但我能够使用 @ 获得响应987654325@ 在 boot2docker
        • 我从 windows shell 运行时看到了同样的情况,发现 boot2docker ip 命令必须从 Git Bash shell 运行。
        【解决方案5】:

        选项 -p 有参数 hostPort:containerPort 所以在你的情况下,端口 8080(在你的 docker 映像内)映射到主机上的端口 8888(你的 windows 框)。这意味着您应该能够通过将:8888 附加到您的 URL 来在您的 Windows 机器上找到 tomcat,就像您使用 curl 所做的那样。

        【讨论】:

        • 不,当我尝试在浏览器中打开 http://localhost:8888 时出现“无法连接”错误。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 2017-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多