美文网首页
运行镜像成容器后,容器自动退出

运行镜像成容器后,容器自动退出

作者: 晨曦_zdq | 来源:发表于2020-05-07 11:18 被阅读0次
    1. 问题描述

    使用dockerfile构建一个新的镜像,运行镜像成容器后大概三秒容器退出

    2. 原因

    Docker容器后台运行,就必须有一个前台进程.

    我构建的镜像在执行CMD [ "/usr/local/emqttd/bin/emqttd", "start" ] 后,emqttd进程以后台的方式运行,程序启动命令执行完毕后,前台任务没有了,容器也就退出了

    3. 解决

    将程序的启动命令写入脚本里,脚本里添加一个一直在前台执行的任务:tail -f /dev/null
    运行镜像时用后台方式:# docker run -itd local/emqttd1:latest

    [root@aaa emqttd]# cat Dockerfile 
    FROM daocloud.io/library/centos:7.7.1908
    ENV mydir /usr/local
    WORKDIR $mydir
    ADD emqttd.tar.gz /usr/local/
    ADD start.sh /
    CMD [ "/bin/sh", "-c", "/start.sh" ]
    
    [root@aaa emqttd]# cat start.sh 
    #!/bin/bash
    /usr/local/emqttd/bin/emqttd start
    tail -f /dev/null
    

    # cat Dockerfile2 
    FROM daocloud.io/library/centos:7.7.1908
    
    ENV mydir /usr/local
    WORKDIR $mydir
    ADD emqttd.tar.gz /usr/local/
    ADD start.sh /
    EXPOSE 18083
    CMD  /usr/local/emqttd/bin/emqttd start && tail -F /dev/null
    
    

    相关文章

      网友评论

          本文标题:运行镜像成容器后,容器自动退出

          本文链接:https://www.haomeiwen.com/subject/mzmoghtx.html