2
爲什麼我的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
我的容器運行良好。爲什麼?????
也'睡眠無限'或'而真;做回聲你好世界;睡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-無限睡眠無限阻塞) –