【发布时间】:2017-06-08 01:47:39
【问题描述】:
我们有 Docker 容器,它运行 systemd 作为主进程 (PID 1)。我们还通过 systemd 单元在 Docker 容器中启动了我们的工作进程。我们的 Docker 容器使用 CentOS 7.2。 我们已经配置了 Docker 停止超时,以便我们可以处理在 Docker 容器中运行的工作进程的正常关闭。 当我们停止 Docker 容器时,我们可以看到 SIGTERM 被接收到在容器内以 PID 1 运行的 systemd 进程。容器还等待我们配置的停止超时。 但是systemd 进程不会将此 SIGTERM 转发给我们已经开始使用 systemd 单元的工作进程。 从日志看,当 systemd 收到 SIGTERM 时,它会尝试重新执行自己。我们曾尝试在我们的 systemd 单元文件中添加 KillMode=mixed,但它对我们不起作用。
有没有办法将 SIGTERM 从 systemd 进程转发到子进程?
【问题讨论】:
-
从共享文章看来,常规系统初始化(在我们的例子中是 systemd)应该能够将 SIGTERM 转发给子进程,但在我们的例子中完全不会发生这种情况。我们想使用 systemd 进行设置。寻找将信号从 systemd 传递到子进程的方法。
标签: docker centos7 systemd sigterm