Docker容器运行Tomcat - 无法使用主机IP地址访问服务器

6
我将尝试从Docker文件构建运行Tomcat的Docker容器。以下是Dockerfile的内容:
FROM ubuntu:trusty
MAINTAINER karthik.jayaraman
VOLUME ["/tomcat/files"]
ADD /files/tar/apache-tomcat-7.0.47.tar.gz /usr/local/tomcat
ADD /files/scripts/. /tmp/tomcat_temp
RUN ls /tmp/tomcat_temp
RUN cp  -a /tmp/tomcat_temp/. /etc/init.d
RUN chmod 755 /etc/init.d/tomcat
RUN chkconfig --add tomcat && chkconfig --level 234 tomcat on
ADD /files/config   /usr/local/tomcat/apache-tomcat-7.0.47/conf/
ADD /files/lib  /usr/local/tomcat/apache-tomcat-7.0.47/lib/
ENV CATALINA_HOME /usr/local/tomcat/apache-tomcat-7.0.47
ENV PATH $PATH:$CATALINA_HOME/bin
EXPOSE 8080
CMD ["service","tomcat","start"]

当我创建镜像并在容器中运行bash时,使用命令“Service tomcat start”启动服务器。我检查了catalina.out文件并确保它正在运行。但是,当我尝试使用Docker安装的主机IP并使用端口号8080访问端口时,我可以连接到Tomcat页面。但是,当我指定容器的内部IP地址-172.24.0.7:8080时,我可以查看Tomcat页面。我猜端口转发没有正确设置。有人能告诉我我在这里犯了什么错误吗?
1个回答

9

只要最后一个命令没有完成,您的Docker容器就会一直运行。您可以将Tomcat作为守护进程启动。这会使Docker在Tomcat启动后停止运行容器。

您可以更改最后一行为:

CMD service tomcat start && tail -f /var/lib/tomcat/logs/catalina.out

或者您可以尝试使用Docker Hub上预先创建的Tomcat容器之一:https://registry.hub.docker.com/search?q=tomcat&s=downloads


谢谢您的回复。它有效了。但是,如果我在Dockerfile中给出EXPOSE 8080:9999,并且在容器启动期间如果我给出“docker run tomcat”,我无法使用http://host-ip:9999访问服务器,但是如果我使用“docker run -p 8080:9999 tomcat”启动容器,我可以访问它。有什么想法为什么? - cucucool
1
你的Dockerfile现在是什么样子? - daniula
暴露8080端口到9999端口。 CMD service tomcat start && tail -f /usr/local/tomcat/apache-tomcat-7.0.47/logs/catalina.out 替换为: - cucucool
1
т░ЮУ»ЋСй┐ућеEXPOSE 8080УђїСИЇТў»EXPOSE 8080:9999сђѓ - ivant
是的,它有效。那是否意味着只有当我从镜像创建正在运行的容器时,我才应该指定要转发的端口号,例如“docker run -p 8080:9999 image”- 是这样吗? - cucucool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接