在利用制作Tomcat镜像的过程中,容器创建后为Exit(0)状态,即容器已停止运行。
查看自己的Dockerfile代码为以下
From centos:7
MAINTAINER this tomcat image <chu>
ADD jdk-8u91-linux-x64.tar.gz /opt/
RUN mv /opt/jdk1.8.0_91/ /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-8.5.16.tar.gz /usr/local/src
RUN mv /usr/local/src/apache-tomcat-8.5.16 /usr/local/tomcat
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/startup.sh"]
查阅资料可得:
- 原因
Tomcat中的 “startup.sh” 命令相当于 “catalina.sh start” 这一命令,意为在前台运行。在Dockers run -d指令后,tomcat已运行,docker认为已经执行完该命令,因此会自动退出。即Exit(0),0代表没有出错
- 解决方法
改变最后一行即可
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
利用 “catalina.sh run” 这一命令使其在Tomcat一直运行,并利用Docker守护进程这一方式使容器一直保持运行。