docker run 运行容器自动结束的解决
今天遇到了用Dockerfile创建镜像,镜像运行后容器自动结束问题.
启动命令:
dockerrun-d-p8080:8080-v/usr/local/tomcat7.0/logs:/usr/local/tomcat7.0/logs--nametomcatwebtomcat:7.0
运行以后用dockerps发现docker容器已经结束了
查找资料后发现这个问题并不复杂原因是应为:Docker容器后台运行,就必须有一个前台进程.
解决办法:
1.将运行进程发放入前台启动如:nginxnginx-g"daemonoff;"tomcat./catalina.shrun
2.使用tail,top这种可以前台运行的程序,特别推荐tail,输出你的log文件.
在Dockerfile中加上ENTRYPOINT/opt/tomcat7.0/bin/startup.sh&&tail-F/opt/tomcat7.0/logs/catalina.out
补充知识:dockerpull拉取的tomcat没有生成日志,自己就手写了一个tocmatdockerfile文件,实测有日志生成
一、dockfile文件以及解释如下
FROMopenjdk:8-jre
MAINTAINERzyj
ENVJAVA_HOME/docker-java-home
ENVCATALINA_HOME/opt/tomcat
ENVPATH$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/scripts
#时区
RUNecho"Asia/Shanghai">/etc/timezone
RUNmv/etc/localtime/etc/localtime_bak
RUNcp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
#TOMCAT
ENVTOMCAT_MAJOR8
ENVTOMCAT_VERSION8.5.35
RUNwgethttp://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz&&\
tar-zxvfapache-tomcat-8.5.41.tar.gz&&\
rmapache-tomcat*.tar.gz&&\
mvapache-tomcat*${CATALINA_HOME}
RUNchmod+x${CATALINA_HOME}/bin/*sh
RUNchmod777${CATALINA_HOME}/logs/
RUNchmod777${CATALINA_HOME}/webapps/
#设置用户名密码admin
ADDtomcat-users.xml/opt/tomcat/conf/
#远程访问
ADDcontext.xml/opt/tomcat/webapps/manager/META-INF/
ENVLANGzh_CN.UTF-8
#开放端口
EXPOSE8080
#LaunchTomcat
WORKDIR/opt/tomcat/bin
CMD["catalina.sh","run"]
注意:该docker需要引用外部文件
详见github
二、dockerfile编译命令
dockerbuild-fdockerfile-tzyj/tomcat.
三、运行命令
dockerrun-d-p8080:8080--nametomcat8 -v/opt/docker-tomcat/logs/:/opt/tomcat/logs/-v/opt/docker-tomcat/webapps/:/opt/tomcat/webapps/-v/opt/docker-tomcat/context.xml:/opt/tomcat/webapps/manager/META-INF/context.xml-v/opt/docker-tomcat/tomcat-users.xml:/opt/tomcat/conf/tomcat-users.xml--privileged=truezyj/tomcat
以上这篇dockerrun运行容器自动结束的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。