内容目录
因为 环境比较复杂,使用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使用还是入门,磕磕碰碰找这种稀奇古怪的解决方案……
多看书,搞清楚原理才是王道
近期评论