如何在 VMWare 工作站中访问 tomcat docker 容器 运行?

How to access tomcat docker container running in VMWare workstation?

我知道这个问题听起来像是一个重复问题,但我找不到其他适合我要求的问题。所以我刚开始使用 docker 开发 tomcat 应用程序。

VMWare Workstation里面的Ubuntu16中安装docker后,下载tomcat-docker镜像,我想要使用 START 命令而不是 运行.

来启动 tomcat 容器

我使用 START 命令因为我不想停留在 STDOUT 中,并且能够继续使用 Linux 命令行。所以我使用下面的命令启动容器

 $ docker start name_of_container

然后我发出检查命令

 $ docker inspect name_of_container

我设法看到我的 tomcat 实例正在使用 ip:172.17.0.2。 所以我确实卷曲了:

 $ curl 172.17.0.2:8080 | head

而且我的 HEAD 标签打印得很完美,这意味着我成功地实例化了我的 tomcat。

我的问题是:如何在 Windows 中通过浏览器访问我的 tomcat?如何在 VMWare 中创建端口转发以使我能够访问 ip 172.17.0.2??

谢谢

首先,您可以使用 运行 命令,而无需使用 -d 选项丢失您的终端。它以分离模式启动容器,tomcat 将在后台运行。

其次,当您 运行 您的容器时,您需要使用 -p 选项将其暴露的端口映射到 VM 中的另一个端口。

所以 运行 命令应该是这样的:

docker run -d -p 8000:8080 tomcat

其中 8000 是您 VM 上的开放端口,8080 是 tomcat 在您的容器中侦听的端口。在端口 8000 上到达您的 VM 的流量将被重定向到 tomcat 容器公开的端口 8080。

最后,您需要找到虚拟机的 IP,而不是容器的 IP。

VM 上的一个 ifconfig 应该足够了。您应该能够从您的主机 ping 它(以便稍后可以从浏览器访问它)。 因此,如果您的 VM 的 IP 结果是 192.168.1.50(例如),您需要在浏览器中输入:

192.168.1.50:8000

这里8000只是一个例子。您也可以使用 8080 以减少 运行 命令中的混淆:

docker run -d -p 8080:8080 tomcat

如果使用 docker create 创建容器,请使用 --publish 指定要发布到主机的端口:

docker create --publish 8080:8080 --name my-tomcat tomcat

然后您可以开始:

docker start my-tomcat

主机上的端口 8080 现在会将流量发送到容器的端口 8080

您应该可以在浏览器中访问 http://ip-of-vm:8080