zoukankan      html  css  js  c++  java
  • docker容器启动后自动停止,dockerfile编写的容器启动后也是自动停止

    1、docker容器启动后自动停止

      自动停止的因素有很多,比如启动后命令有问题就停止了,这类容器在启动后是可以看到容器的启动日志的,比如使用docker logs命令即可

      不过还有的容器意外停止是因为当前容器没有要运行的任务,比如centos镜像,它默认没有运行的任务,如果没有任务就会自动停止,这种不是意外停止,这点要注意

    因此需要注意一点就是:在制作dockerfile的时候,要有一个运行在前台的任务,因此那些运行在后台的参数最好是不要加上去,也就是让程序运行在前台。

    2、dockerfile案例演示

    FROM centos7.5
    WORKDIR /usr/local/src
    COPY elasticsearch-7.4.0-linux-x86_64.tar.gz ./
    RUN tar xf elasticsearch-7.4.0-linux-x86_64.tar.gz 
        && mv elasticsearch-7.4.0 /usr/local/elastic7.4 
        && useradd -s /bin/bash -U elastic 
        && echo 'elastic soft memlock unlimited' >> /etc/security/limits.conf 
        && echo 'elastic hard memlock unlimited' >> /etc/security/limits.conf
    USER elastic
    
    RUN /usr/local/elastic7.4/bin/elasticsearch --daemonize --pidfile /usr/local/elastic7.4/run/elastic7.4.pid

    这个脚本的问题就在于,--daemonize这个参数表示程序运行在后台,此时启动制作出来的容器是不会一直运行的,也就是启动后就停止了

    解决方法就是将--daemonize这个参数去掉,此时镜像在启动后直接执行此命令,程序就运行在前台,日志也打印在前台了。

    还有一个就是docker run -it --name=centos centos7.5:1.0 /bin/bash这种命令运行时默认执行/bin/bash,这个bash命令会覆盖dockfile中的CMD指令,这点需要注意。

    最后就是容器执行的用户,可以在docker run 启动时指定--name=chaofeng这样的参数指定容器运行的用户。

  • 相关阅读:
    WOJ 1055
    做人做事
    实现Runnable接口和扩展Thread使用场景
    利用Perf4j 对java项目进行性能监控
    android画笔错位问题的解决
    IE常见的CSS的BUG(二)
    激动啊,终于诞生了,编译了属于俺自己的 JDK
    图像处理特征不变算子系列之Moravec算子(一)
    对象的动态建立和释放
    用TinyXml2读取XML文件的一个简单Demo
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/12085276.html
Copyright © 2011-2022 走看看