我想在执行run命令后保持docker容器运行(容器在docker run..
之后立即退出。我知道命令:
while :;do
sleep 300
done
docker run
期间的将使其运行,但如何编辑 Dockerfile 本身以使其保持运行?
答案 0 :(得分:6)
您可以通过将要执行的命令放入脚本中,并将脚本设置为Docker在启动容器时运行的命令来执行此操作:
FROM sixeyed/ubuntu-with-utils
RUN echo 'ping localhost &' > /bootstrap.sh
RUN echo 'sleep infinity' >> /bootstrap.sh
RUN chmod +x /bootstrap.sh
CMD /bootstrap.sh
当你从这个Dockerfile构建一个图像并从图像中运行一个容器时,它将在后台启动ping
并在前台启动sleep
,这样你就可以用{{1}守护容器它将继续运行。
这不太理想 - Docker只监视它在运行容器时启动的最后一个进程,因此它将检查docker run -d
而不是sleep
。如果ping
命令错误,容器将继续运行。通常,您希望真正的应用程序是您在ping
中开始的唯一内容。