From 46020ff78674893c44885743669a7a9a4ab1e09e Mon Sep 17 00:00:00 2001 From: CybCom <91059829+CybCom@users.noreply.github.com> Date: Thu, 21 Dec 2023 01:06:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(image\dockerfile\cmd.md):=20:bug:=20Fix=20i?= =?UTF-8?q?ssue=20yeasy#535,=20=E6=94=B9=E8=BF=9B=E5=AF=B9issue=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E7=9A=84=E6=8F=90=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(image): CMD指令讲解中,”则是希望 upstart 来以后台守护进程形式启动 nginx 服务“,鉴于当前多种init程序(特别是以systemd为代表的)的流行,改为 ”则是希望 init 系统以后台守护进程的形式启动 nginx 服务“ Issue #535: 关于init进程的提法改进 --- image/dockerfile/cmd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/image/dockerfile/cmd.md b/image/dockerfile/cmd.md index b4354ff..2360c9f 100644 --- a/image/dockerfile/cmd.md +++ b/image/dockerfile/cmd.md @@ -40,7 +40,7 @@ CMD service nginx start 对于容器而言,其启动程序就是容器应用进程,容器就是为了主进程而存在的,主进程退出,容器就失去了存在的意义,从而退出,其它辅助进程不是它需要关心的东西。 -而使用 `service nginx start` 命令,则是希望 upstart 来以后台守护进程形式启动 `nginx` 服务。而刚才说了 `CMD service nginx start` 会被理解为 `CMD [ "sh", "-c", "service nginx start"]`,因此主进程实际上是 `sh`。那么当 `service nginx start` 命令结束后,`sh` 也就结束了,`sh` 作为主进程退出了,自然就会令容器退出。 +而使用 `service nginx start` 命令,则是希望 init 系统以后台守护进程的形式启动 nginx 服务。而刚才说了 `CMD service nginx start` 会被理解为 `CMD [ "sh", "-c", "service nginx start"]`,因此主进程实际上是 `sh`。那么当 `service nginx start` 命令结束后,`sh` 也就结束了,`sh` 作为主进程退出了,自然就会令容器退出。 正确的做法是直接执行 `nginx` 可执行文件,并且要求以前台形式运行。比如: