我试图了解STOPSIGNALdockerfile中命令的确切作用。因此,根据Docker Docs:
STOPSIGNAL指令设置将被发送到容器退出的系统调用信号。该信号可以是与内核syscall表中的位置匹配的有效无符号数字(例如9),也可以是格式为SIGNAME的信号名称(例如SIGKILL)。
通过这种解释,我了解到有一些信号发送到docker容器,以告知内部应用程序停止。但是,当我使用来关闭正在运行的容器时sudo docker stop container-name,它是否还自动停止了其中运行的所有内容?我可以键入此命令而不会出现任何错误。然后STOPSIGNAL在dockerfile中显式定义不是多余的吗?
查看如何使用dockerfile构建Nginx,使用了命令STOPSIGNAL SIGTERM。但是,那个寓意是什么意思呢?它会破坏一些无法定义的东西STOPSIGNAL吗?
sp0*_*0gg 10
SIGTERM是发送到容器以停止它们的默认信号:https : //docs.docker.com/engine/reference/commandline/stop/
STOPSIGNAL确实允许您覆盖发送到容器的默认信号。将其保留在Dockerfile中不会造成任何危害-它将保持默认值SIGTERM。
话虽如此,目前尚不清楚为什么作者明确定义了STOPSIGNALas SIGTERM。
查看此提交,我们可以看到STOPSIGNAL曾经被设置为SIGQUIT。
我的猜测是,进行更改后,出于文档考虑,他们将其明确保留。
在此处讨论更改:https : //github.com/nginxinc/docker-nginx/issues/167
运行时docker stop,您正在指示Docker守护进程向运行容器的进程发送信号以使其停止。
默认情况下,它通过发送a SIGTERM然后等待一小段时间来执行此操作,以便进程可以正常退出。如果该进程没有在宽限期内终止(默认情况下为10秒,可自定义),它将发送SIGKILL。
但是,您的应用程序可能被配置为侦听不同的信号- SIGUSR1和SIGUSR2。
在这些情况下,您可以使用STOPSIGNALDockerfile指令覆盖默认值。
| 归档时间: |
|
| 查看次数: |
4665 次 |
| 最近记录: |