为什么我的docker在执行我的shell脚本后退出?
问题描述:
为什么我的docker在执行我的shell脚本后退出?谢谢。为什么我的docker在执行我的shell脚本后退出?
泊坞版本:
docker --version
Docker version 1.12.4, build 1564f02
我的图片:
docker pull lw96/ubuntu-16.04-lnmp1.3
后,我跑:
docker run -it -d --name test -p 8080:80 lw96/ubuntu-16.04-lnmp1.3 sh /root/run.sh
和我一起检查:docker ps -a
[email protected]:/home/liwei# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
68c0ce4c59f7 a57b0c1a60cf "/bin/bash" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp test
这里的run.sh:
#! /bin/bash
lnmp restart
echo "lnmp already start"
exit 0
而且我得到的日志:
[email protected]:/home/liwei# docker logs -f test
+-------------------------------------------+
| Manager for LNMP, Written by Licess |
+-------------------------------------------+
| http://lnmp.org |
+-------------------------------------------+
Stoping LNMP...
Stoping nginx... nginx is not running.
* MySQL server PID file could not be found!
Gracefully shutting down php-fpm /etc/init.d/php-fpm: 82: kill: No such process
................................... failed. Use force-quit
Starting LNMP...
Starting nginx... done
Starting MySQL
.. *
Starting php-fpm done
lnmp already start!
在那之后,我的码头工人容器出口:
[email protected]:/home/liwei# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb98d7427802 lw96/ubuntu-16.04-lnmp1.3 "sh /root/run.sh" 8 minutes ago Exited (0) 7 minutes ago test
但是,当我使用:
docker pull lw96/ubuntu-16.04-lnmp1.3
docker run -it -d -p 80:80 --name test lw96/ubuntu-16.04-lnmp1.3
docker exec -it test /bin/bash
cd ~ && ./run.sh
我的容器运行良好。为什么?????
答
只要主进程正在运行,docker容器就会运行,只要入口点/命令进程退出,它就会结束。在你的情况下,只要你到达exit 0
线,你的过程完成,码头集装箱应该退出。
如果你想防止这种情况,你必须保持你的进程运行。在这里你有很多选择,比如在前台运行你的进程,或者通过做一些类似tail -f /some/log/file
的日志来源于你的后台运行进程来保持进程运行。
也'睡眠无限'或'而真;做回声你好世界;睡1; done'也可以正常工作 – user2915097
基本上任何事情都会持续下去,越有意义越好! – mohamnag
@mohamnag我明白了你的观点。我尝试在我的run.sh文件中添加'sleep infinity',然后'docker run -it -d --name test -p 8080:80 lw96/ubuntu-16.04 -lnmp1.3 sh/root/run.sh'工作很好。同样,像'tail -f/dev/null'可以帮助,由于某种原因从[Bash:无限的睡眠(无限阻塞)]更具有兼容性(http://stackoverflow.com/questions/2935183/bash-无限睡眠无限阻塞) –