AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1026631
Accepted
leedm777
leedm777
Asked: 2020-07-25 09:34:06 +0800 CST2020-07-25 09:34:06 +0800 CST 2020-07-25 09:34:06 +0800 CST

如何在不影响重启策略的情况下向 Docker 容器发送信号?

  • 772

TIL 这docker kill意味着“让它死”意义上的杀戮,而不是 POSIX 意义上的“发送信号”。

我们有几个容器需要发送一个SIGHUP来重新加载配置,但这会导致它们忽略“总是”的重启策略,这不是我们想要的。

在不影响其自动重启能力的情况下向这些容器发送信号的最佳方式是什么?


为了更清楚地展示我们所看到的问题,请看以下示例。

我们有一些容器的重启策略设置为始终

$ docker inspect cloudwatch-exporter | jq .[].HostConfig.RestartPolicy
{
  "Name": "always",
  "MaximumRetryCount": 0
}

我们在某个时候使用以下命令重新加载配置docker kill:

$ docker kill --signal=SIGHUP cloudwatch-exporter
cloudwatch-exporter

一段时间后,发生了一些事情,导致进程终止。为了模拟这一点,我将在容器内发送一个信号:

$ docker exec cloudwatch-exporter bash -c "kill 1"

此时,容器已死,不会重新启动:

$ docker ps -a | grep cloudwatch-exporter
c7827204bba5        prom/cloudwatch-exporter:cloudwatch_exporter-0.8.0                                "java -jar /cloudwat…"   20 hours ago        Exited (143) 3 minutes ago                            cloudwatch-exporter

我们有什么替代品可以使用docker kill?在许多情况下docker exec有效,但它不适用于仅包含单个静态链接二进制文件的任何容器。

signals docker
  • 2 2 个回答
  • 2032 Views

2 个回答

  • Voted
  1. FeepingCreature
    2020-09-29T00:37:05+08:002020-09-29T00:37:05+08:00

    这是一个已知的 Docker 错误。

    请参阅https://github.com/moby/moby/issues/11065 “非致命信号中断重启策略”

    请参阅https://github.com/moby/moby/issues/41302 “信号中断,除非停止重启策略”

    通过做绕过问题docker exec "kill -HUP 1"。

    • 4
  2. Best Answer
    Michael Hampton
    2020-07-25T09:53:48+08:002020-07-25T09:53:48+08:00

    可以--signal选择docker kill?

    docker kill --signal=SIGHUP <container>
    

    还是与docker exec?

    docker exec <container> killall -HUP nginx
    
    • 2

相关问题

  • 让 systemd 服务稍后停止,而不会阻塞 `systemctl stop`

  • PostgreSQL 进程及其响应的信号

  • 如何在工作中使用符号信号?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve