繁体   English   中英

无法从主机访问在Docker容器中运行的tomcat8服务器

[英]Cannot access tomcat8 server running in docker container from host machine

我正在尝试连接到在docker容器中的tomcat8上运行的Web应用程序。 我可以从使用lynx http://localhost:8080/myapp的容器中访问它,但是当我尝试从主机访问它时,我只会收到HTTP request sent; waiting for response. HTTP request sent; waiting for response.

我在Dockerfile中暴露了8080端口,我正在使用sudo docker inspect mycontainer | grep IPAddress sudo docker inspect mycontainer | grep IPAddress获取容器的IP地址。

我用来运行docker容器的命令是这样的:

sudo docker run -ti --name myapp --link mysql1:mysql1 --link rabbitmq1:rabbitmq1 -e "MYSQL_HOST=mysql1" -e "MYSQL_USER=myuser" -e "MYSQL_PASSWORD=mysqlpassword" -e "MYSQL_USERNAME=mysqlusername" -e "MYSQL_ROOT_PASSWORD=rootpassword" -e "RABBITMQ_SERVER_ADDRESS=rabbitmq1" -e "MY_WEB_ENVIRONMENT_ID=qa" -e "MY_WEB_TENANT_ID=tenant1" -p "8080:8080" -d localhost:5000/myapp:latest

我的Dockerfile:

FROM localhost:5000/web_base:latest
MAINTAINER "Me" <me@my_company.com>

#Install mysql client
RUN yum -y install mysql

#Add Run shell script
ADD run.sh /home/ec2-user/run.sh
RUN chmod +x /home/ec2-user/run.sh

EXPOSE 8080

ENTRYPOINT ["/bin/bash"]
CMD ["/home/ec2-user/run.sh"]

我的run.sh:

sudo tomcat8 start && sudo tail -f /var/log/tomcat8/catalina.out

有什么想法为什么我可以从容器中而不是从主机中访问它?

谢谢

您的docker run命令是什么样的? 您仍然需要执行-p 8080:8080。 在dockerfile中公开只会将链接的容器公开给主机vm。

我现在可以从主机访问tomcat8服务器。 问题在这里:

sudo tomcat8 start && sudo tail -f /var/log/tomcat8/catalina.out

必须将Tomcat8作为服务启动:

sudo service tomcat8 start && sudo tail -f /var/log/tomcat8/catalina.out

点击给定命令以找到 docker-machine的IP地址

$ docker-machine ls

输出将类似于

NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v1.10.3

现在从主机运行您的应用程序,如下所示 http : //192.168.99.100 : 8080/myapp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM