docker run 运行容器自动结束的解决

 更新时间:2020年11月19日 09:01:14   作者:龙炎轻舞  
这篇文章主要介绍了docker run 运行容器自动结束的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

今天遇到了用Dockerfile创建镜像,镜像运行后容器自动结束问题.

启动命令:

docker run -d -p 8080:8080 -v /usr/local/tomcat7.0/logs:/usr/local/tomcat7.0/logs --name tomcatweb tomcat:7.0

运行以后用docker ps 发现docker 容器已经结束了

查找资料后发现 这个问题并不复杂 原因是应为:Docker容器后台运行,就必须有一个前台进程.

解决办法:

1.将运行进程发放入前台启动 如:nginx nginx -g "daemon off;" tomcat ./catalina.sh run

2.使用 tail , top 这种可以前台运行的程序,特别推荐 tail ,输出你的log文件.

在Dockerfile中加上ENTRYPOINT /opt/tomcat7.0/bin/startup.sh && tail -F /opt/tomcat7.0/logs/catalina.out

补充知识:docker pull 拉取的tomcat 没有生成日志,自己就手写了一个tocmat dockerfile文件,实测有日志生成

一、dockfile 文件以及解释如下

FROM openjdk:8-jre 
MAINTAINER zyj
 
ENV JAVA_HOME /docker-java-home
ENV CATALINA_HOME /opt/tomcat 
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/scripts
 
#时区 
RUN echo "Asia/Shanghai" > /etc/timezone 
RUN mv /etc/localtime /etc/localtime_bak 
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
#TOMCAT 
ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.5.35
 
RUN wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz && \
 tar -zxvf apache-tomcat-8.5.41.tar.gz && \
 rm apache-tomcat*.tar.gz && \
 mv apache-tomcat* ${CATALINA_HOME} 
 
RUN chmod +x ${CATALINA_HOME}/bin/*sh 
RUN chmod 777 ${CATALINA_HOME}/logs/ 
RUN chmod 777 ${CATALINA_HOME}/webapps/
 
#设置用户名密码 admin 
ADD tomcat-users.xml /opt/tomcat/conf/
 
#远程访问 
ADD context.xml /opt/tomcat/webapps/manager/META-INF/
 
ENV LANG zh_CN.UTF-8
 
#开放端口 
EXPOSE 8080
 
# Launch Tomcat 
WORKDIR /opt/tomcat/bin
CMD ["catalina.sh","run"]

注意:该docker 需要引用外部文件

详见 github

二、dockerfile 编译命令

docker build -f dockerfile -t zyj/tomcat .

三、运行命令

docker run -d -p 8080:8080 --name tomcat8
-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=true zyj/tomcat

以上这篇docker run 运行容器自动结束的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何修改docker容器中MySQL的用户密码

    如何修改docker容器中MySQL的用户密码

    本文主要介绍了如何修改docker容器中MySQL的用户密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Docker容器网络配置全攻略之桥接、Host、container详解

    Docker容器网络配置全攻略之桥接、Host、container详解

    这篇文章主要介绍了Docker容器网络配置全攻略之桥接、Host、container的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • docker运行nginx容器并挂载数据卷

    docker运行nginx容器并挂载数据卷

    本文主要介绍了docker运行nginx容器,并通过挂载目录将容器与宿主机的数据进行共享和统一管理,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • Docker拉取镜像失败解决(connect: connection refused)

    Docker拉取镜像失败解决(connect: connection refused)

    最近遇到Docker拉取centos镜像时报错,本文主要介绍了Docker拉取镜像失败解决(connect: connection refused),具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • 清理Docker废弃镜像与缓存详细图文教程

    清理Docker废弃镜像与缓存详细图文教程

    在使用Docker进行开发和部署过程中,我们可能会遇到需要删除旧镜像和容器以释放磁盘空间或清除不再需要的缓存的情况,这篇文章主要给大家介绍了关于清理Docker废弃镜像与缓存的相关资料,需要的朋友可以参考下
    2024-07-07
  • Docker 最常用的镜像命令和容器命令详解

    Docker 最常用的镜像命令和容器命令详解

    这篇文章主要介绍了Docker 最常用的镜像命令和容器命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Linux下Docker安装和使用教程

    Linux下Docker安装和使用教程

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。这篇文章主要介绍了Linux下Docker安装和使用教程的相关资料,需要的朋友可以参考下
    2016-10-10
  • centos7安装/升级docker和docker compose方式

    centos7安装/升级docker和docker compose方式

    文章总结了在升级Docker和安装Docker Compose时遇到的问题,包括旧版安装和新版安装的差异、docker-compose的安装问题以及卸载前的注意事项
    2024-12-12
  • FastAPI 部署在Docker的详细过程

    FastAPI 部署在Docker的详细过程

    这篇文章主要介绍了FastAPI 部署在 Docker的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • docker镜像管理命令详解

    docker镜像管理命令详解

    这篇文章主要介绍了docker镜像管理命令,我们也可以使用命令来搜索镜像,比如我们需要一个tomcat的镜像来作为我们的web服务,我们可以通过 docker search 命令搜索tomcat来寻找适合我们的镜像,本文给大家介绍的非常详细,需要的朋友参考下吧
    2022-07-07

最新评论