百木园-与人分享,
就是让自己快乐。

docker run -d 一启动就退出

疑问说明

        今天使用镜像启动容器 

         运行命令

docker run --name tmpcentos -d centos

 

    通过docker ps查看正在运行中容器 ,发现在运行中的容器中无法找到缺找不到tmpcentos容器

    当通过docker ps -a查看发现

    tmpcentos容器已经处于停止状态了,那么为什么出现这种现象呢?

出现这种现象的原因:

docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,容器运行的命令如果不是那些一直挂起的命令(eg. 运行top,tail等),就会自行退出
容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
这个是 docker 的机制问题,

   如我们的 web 容器,以 nginx 和 fpm 为例,正常情况下,

  启动服务只需启动相应的 service 即可,

如:service nginx start && service php5-fpm start,但是,这样做, nginx 和 fpm 均以后台进程模式运行

    就会导致 docker 前台没有正在运行的应用,so,容器会立即自杀,因为他觉得没事可做了。
 

方案1
   开起一个死循环进程,让他不停的循环下去,前台永远有进程执行,那么容器就不会退出了,以centos为例

 

docker run -d centos /bin/sh -c \"while true; do echo hello world; sleep 1; done\"

方案2

在脚本最后一行添加tail -f /dev/null,这个命令永远完成不了,所以该脚本一直不会执行完,所以该容器永远不会退出
就是起一个死循环进程,让他不停的循环下去,前台永远有进程执行,那么容器就不会退出了

docker run -d --name ubuntu ubuntu /bin/bash -c \"tail -f /dev/null\" 

参照资料:

   http://www.java265.com/docker/202206/3648.html


来源:https://www.cnblogs.com/java265/p/16344726.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » docker run -d 一启动就退出

相关推荐

  • 暂无文章