1. 程式人生 > >使用Docker構建nginx容器,並且啟動後不會自動退出

使用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會在後臺執行