本站文章总数为:165
Search Posts

docker启动执行脚本后自动退出的问题解决

内容纲要

因为 环境比较复杂,使用docker commit构造镜像,

构造后的镜像启动 使用命令进行调用启动,但是一运行就退出了,最开始的方案是

 docker run -itd    --name=0.0.1  lv2:0.0.1   /bin/bash 
 docker exec   0.0.1 /bin/bash -c "/start.sh &"

 

但是启动个东西需要两行命令好烦啊,就找方案 什么开机启动etc/rc.d/rc.local  /etc/rc.d/init.d chkconfig做开机启动项什么的,也没什么软用

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

最开始是

docker run -itd    --name=0.0.2 lv2:0.0.2   /bin/bash -c "/start.sh&&tail -f /dev/null"

容器是没退出,但是进容器一看start.sh 启动的java早没了,只是保活了容器

所以我将tail -f /dev/null加到了start.sh的最后一行

然后重新构造个镜像近期启动

docker run -itd    --name=0.0.2 lv2:0.0.2   /bin/bash /start.sh

nice 进入容器 java程序进程还活着….

docker使用还是入门,磕磕碰碰找这种稀奇古怪的解决方案……

多看书,搞清楚原理才是王道

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注