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运行容器自动结束的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。