Docker STOPSIGNAL做什么?
我试图理解dockerfile中的Docker STOPSIGNAL做什么?,docker,dockerfile,Docker,Dockerfile,我试图理解dockerfile中的STOPSIGNAL命令的确切功能。因此,根据报告: STOPSIGNAL指令设置将被调用的系统调用信号 发送到容器以退出。此信号可以是有效的无符号信号 与内核syscall表中的位置匹配的数字,例如 例如,实例9或格式为SIGNAME的信号名称 西格尔 通过这个解释,我了解到有一些信号被发送到docker容器,告诉内部应用程序停止。但是当我用sudocker stop container name关闭一个正在运行的容器时,它不也会自动停止里面运行的所有东西吗?
STOPSIGNAL
命令的确切功能。因此,根据报告:
STOPSIGNAL指令设置将被调用的系统调用信号
发送到容器以退出。此信号可以是有效的无符号信号
与内核syscall表中的位置匹配的数字,例如
例如,实例9或格式为SIGNAME的信号名称
西格尔
通过这个解释,我了解到有一些信号被发送到docker容器,告诉内部应用程序停止。但是当我用sudocker stop container name
关闭一个正在运行的容器时,它不也会自动停止里面运行的所有东西吗?我可以键入此命令而不会出现任何错误。在dockerfile中显式定义STOPSIGNAL
难道不是多余的吗
查看如何使用命令
STOPSIGNAL SIGTERM
。但这究竟意味着什么?如果不定义STOPSIGNAL
,是否会破坏某些功能?SIGTERM
是发送到容器以停止它们的默认信号:
STOPSIGNAL
允许您覆盖发送到容器的默认信号。将其保留在Dockerfile之外不会造成任何伤害-它将保持默认的SIGTERM
尽管如此,仍不清楚作者为何将STOPSIGNAL
明确定义为SIGTERM
看看这个,我们可以看到STOPSIGNAL
过去被设置为SIGQUIT
我的猜测是,在进行更改之后,为了文档的缘故,他们明确地保留了它
此处讨论更改:运行时,指示Docker守护进程向运行容器的进程发送停止信号
默认情况下,它会发送一个SIGTERM
,然后等待一小段时间,以便进程可以正常退出。如果进程没有在宽限期内终止(默认为10秒,可自定义),它将发送一个SIGKILL
但是,您的应用程序可能被配置为监听不同的信号,例如,SIGUSR1
和SIGUSR2
在这些情况下,您可以使用
STOPSIGNAL
Dockerfile指令覆盖默认值。要完成此回答,“短时间”默认为10秒。如果不合适,可以使用docker stop命令将“宽限期”设置为参数。@VincentPazeller谢谢,您所说的是正确的。请随意编辑我的答案!