热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DockerSTOPSIGNAL做什么?

如何解决《DockerSTOPSIGNAL做什么?》经验,为你挑选了2个好方法。

我试图了解STOPSIGNALdockerfile中命令的确切作用。因此,根据Docker Docs:

STOPSIGNAL指令设置将被发送到容器退出的系统调用信号。该信号可以是与内核syscall表中的位置匹配的有效无符号数字(例如9),也可以是格式为SIGNAME的信号名称(例如SIGKILL)。

通过这种解释,我了解到有一些信号发送到docker容器,以告知内部应用程序停止。但是,当我使用来关闭正在运行的容器时sudo docker stop container-name,它是否还自动停止了其中运行的所有内容?我可以键入此命令而不会出现任何错误。然后STOPSIGNAL在dockerfile中显式定义不是多余的吗?

查看如何使用dockerfile构建Nginx,使用了命令STOPSIGNAL SIGTERM。但是,那个寓意是什么意思呢?它会破坏一些无法定义的东西STOPSIGNAL吗?



1> sp0gg..:

SIGTERM是发送到容器以停止它们的默认信号:https : //docs.docker.com/engine/reference/commandline/stop/

STOPSIGNAL确实允许您覆盖发送到容器的默认信号。将其保留在Dockerfile中不会造成任何危害-它将保持默认值SIGTERM

话虽如此,目前尚不清楚为什么作者明确定义了STOPSIGNALas SIGTERM

查看此提交,我们可以看到STOPSIGNAL曾经被设置为SIGQUIT

我的猜测是,进行更改后,出于文档考虑,他们将其明确保留。

在此处讨论更改:https : //github.com/nginxinc/docker-nginx/issues/167



2> d4nyll..:

运行时docker stop,您正在指示Docker守护进程向运行容器的进程发送信号以使其停止。

默认情况下,它通过发送a SIGTERM然后等待一小段时间来执行此操作,以便进程可以正常退出。如果该进程没有在宽限期内终止(默认情况下为10秒,可自定义),它将发送SIGKILL

但是,您的应用程序可能被配置为侦听不同的信号- SIGUSR1SIGUSR2

在这些情况下,您可以使用STOPSIGNALDockerfile指令覆盖默认值。


推荐阅读
author-avatar
锋丽恋歌521
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有