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

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

VMWare Workstation中的Ubuntu 16中安装docker后,下载tomcat-docker映像后,我想用START命令而不是RUN来启动tomcat容器。

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

$ docker start name_of_container 

然后我发出检查命令

  $ docker inspect name_of_container 

我设法看到我的tomcat实例使用ip: 172.17.0.2 。 所以我做了如下curl:

  $ curl 172.17.0.2:8080 | head 

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

我的问题是:如何从Windows中的浏览器访问我的Tomcat? 我怎么能在VMWare中创build一个端口转发,使我能够访问IP 172.17.0.2?

谢谢

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

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

然后你可以开始:

 docker start my-tomcat 

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

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

首先,您可以使用RUN命令,而不必使用-d选项来释放terminal。 它以分离模式启动容器,tomcat将在后台。

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

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

 docker run -d -p 8000:8080 tomcat 

其中8000是虚拟机上的开放端口,8080是tomcat在容器中侦听的端口。 在端口8000上到达您VM的stream量将被redirect到tomcat容器暴露的端口8080。

最后,你将需要find你的虚拟机的IP,而不是你的容器的IP。

虚拟机上的ifconfig应该足够了。 您应该能够从您的主机ping它(以便稍后可以从浏览器访问它)。 因此,如果您的虚拟机的IP变为192.168.1.50(例如),您将需要在浏览器中input:

192.168.1.50:8000

这里8000只是一个例子。 您也可以使用8080,以免在RUN命令中产生混淆:

 docker run -d -p 8080:8080 tomcat