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

2020-05-07  本文已影响0人  晨曦_zdq
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

上一篇 下一篇

猜你喜欢

热点阅读