使用Docker構建nginx容器,並且啟動後不會自動退出
阿新 • • 發佈:2018-12-24
為什麼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會在後臺執行