鍍金池/ 問答/Linux/ 為什么docker-compose運行nginx需要 "deamon

為什么docker-compose運行nginx需要 "deamon off"

docer-compose.yml

# nginx
nginx_test:
  container_name: "nginx_test"
  image: "nginx"
  tty: true
  # command: nginx
  command: nginx -g "daemon off;"

如果按照注釋的地方配置,容器會一直是exited狀態(tài)。

docker-compose 日志:

nginx_test exited with code 1

補充說明:
1 下載的官方鏡像。
2 用docker inspect命令可以看到,默認的命令就是command: nginx -g "daemon off;",因此可以不填寫 command配置。
但是我的問題是,為什么一定要加上daemon off, nginx 容器才能正常運行?

回答
編輯回答
女流氓

你下載的是否是官方鏡像?
如果是官方鏡像,不需要使用command,容器啟動成功既nginx啟動成功。

2017年11月1日 22:43
編輯回答
有點壞
docker 容器默認會把容器內(nèi)部第一個進程,也就是pid=1的程序作為docker容器是否正在運行的依據(jù),如果docker 容器pid掛了,那么docker容器便會直接退出

docker run的時候把command最為容器內(nèi)部命令,如果你使用nginx,那么nginx程序?qū)⒑笈_運行,這個時候nginx并不是pid為1的程序,而是執(zhí)行的bash,這個bash執(zhí)行了nginx指令后就掛了,所以容器也就退出了,和你這個一樣的道理,pm2 start 過后,bash 的pid為1,那么此時bash執(zhí)行完以后會退出,所以容器也就退出了。

2017年10月31日 08:14