使用Docker構建nginx容器,並且啟動后不會自動退出


為什么docker運行后就自動退出?

docker 容器默認會把容器內部第一個進程,也就是pid=1的程序作為docker容器是否正在運行的依據,
如果docker 容器pid掛了,那么docker容器便會直接退出。

docker run的時候把command做為容器內部命令,如果你使用nginx,那么nginx程序將后台運行,這個時候nginx並不是pid為1的程序,而是執行的bash,這個bash執行了nginx指令后就掛了,所以容器也就退出了。

Docker 容器啟動時,默認會把容器內部第一個進程,也就是pid=1的程序,作為docker容器是否正在運行的依據,如果 docker 容器pid=1的進程掛了,那么docker容器便會直接退出。

Docker未執行自定義的CMD之前,nginx的pid是1,執行到CMD之后,nginx就在后台運行,bash或sh腳本的pid變成了1。
所以一旦執行完自定義CMD,nginx容器也就退出了。

解決方法:

在編寫dockerfile的時候加上  “daemon off;”參數,如下:

FROM ubuntu:16.04

Run apt-get update
Run apt-get install -y nginx

CMD ["nginx","-g","daemon off;"]

構建容器后使用:

docker run -d ubuntu:16.04   #-d參數讓容器在后台運行

啟動容器后nginx會在后台運行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM