为什么在Docker环境下运行时不能访问TomEE?

我在Docker中运行Tomee7。 日志说,它开始,但我无法在浏览器中看到。

我尝试使用本地主机:8080和dockerIP 192.168.99.100:8080

Tomee日志:

INFO - Creating Container(id=My Stateless Container) INFO - Creating ServerService(id=cxf) INFO - Creating ServerService(id=cxf-rs) INFO - ** Bound Services ** INFO - NAME IP PORT INFO - ------- INFO - Ready! INFO - Initialization processed in 2663 ms INFO - Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'. INFO - Creating Resource(id=UserDatabase) INFO - Starting service Catalina INFO - Starting Servlet Engine: Apache Tomcat (TomEE)/8.5.3 (7.0.1) INFO - Deploying web application directory /home/test/apache-tomee-plus-7.0.1/webapps/ROOT INFO - ------------------------- localhost -> / INFO - Configuring enterprise application: /home/test/apache-tomee-plus-7.0.1/webapps/ROOT INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) INFO - Auto-creating a container for bean .Comp131040203: Container(type=MANAGED, id=Default Managed Container) INFO - Creating Container(id=Default Managed Container) INFO - Using directory /home/test/apache-tomee-plus-7.0.1/temp for stateful session passivation INFO - Enterprise application "/home/test/apache-tomee-plus-7.0.1/webapps/ROOT" loaded. INFO - Assembling app: /home/test/apache-tomee-plus-7.0.1/webapps/ROOT INFO - Deployed Application(path=/home/test/apache-tomee-plus-7.0.1/webapps/ROOT) INFO - At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. INFO - Deployment of web application directory /home/test/apache-tomee-plus-7.0.1/webapps/ROOT has finished in 729 ms INFO - Starting ProtocolHandler [http-apr-80] INFO - Starting ProtocolHandler [https-openssl-apr-8443] INFO - Server startup in 813 ms 

docker工人日志:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7727df4619b tomee7 "/bin/sh -c '${TOM..." 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp tomee7 

docker机:

 $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:2376 v17.06.0-ce 

tomee服务器:ifconfig日志

 $ docker exec -it tomee7 /bin/bash root@e7727df4619b:/home/test# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:828 (828.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:200 (200.0 B) TX bytes:200 (200.0 B) 

Tomcat启动日志说: INFO - Starting ProtocolHandler [http-apr-80] 。 我build议tomcat听80端口。 但是你公开了8080端口。

有2种方法来解决它:公开80端口(docker集装箱)。 或者更改tomcat侦听端口。

你能告诉我请Dockerfile? 我尝试修复它。

看来你在虚拟机里的虚拟机上运行Docker。 您需要在虚拟机上configuration端口转发。

如果您打开虚拟机设置并selectnetworking,则应该有一个选项来configuration端口转发。 你可以谷歌截图或video显示如何做到这一点,只要确保你使用正确的端口号。