【问题标题】:Docker Daemon stop - Timeout for container defaults 10sDocker 守护进程停止 - 容器默认超时 10 秒
【发布时间】:2016-05-02 09:43:08
【问题描述】:

docker stop 的标准超时时间为 10 秒 (Reference - Docker Stop)。这个时间窗口可能是 mysql 或 influxdb 关闭以在文件系统上达到一致状态的缩写。如果我手动停止容器,我会使用docker stop -t 60 mysql 将其关闭。但这不是默认情况。容器处于自动重启状态,并通过 docker 守护进程启动和停止。

如果我停止 docker 守护进程(例如在系统重新启动时),守护进程将停止所有正在运行的容器,超时时间为 10 秒,这可能导致 dbs 不一致。

问题:有没有办法为docker stop 设置全局超时或守护进程停止?

2016-05-03 更新:在 github 上添加了 [Feature Request] Add config parameter to change stop timeout for containers or globally #22471

【问题讨论】:

    标签: mysql docker influxdb


    【解决方案1】:

    https://docs.docker.com/engine/reference/commandline/dockerd/

    使用以下配置

    --shutdown-timeout int            Set the default shutdown timeout (default 15)
    

    或者像下面这样把它放在 docker daemon.json 中并重启 docker daemon

    tee /etc/docker/daemon.json <<-'EOF'
    {
      "shutdown-timeout": 30,
      "live-restore": true
    }
    EOF
    systemctl restart docker
    systemctl status docker
    

    【讨论】:

    • 这不行。 “live-restore”选项使 docker 在没有容器终止的情况下终止 - 这会在主机关闭时守护进程终止后导致容器终止。只是“关闭超时”没有按预期工作 - 存在问题:github.com/moby/moby/issues/32357
    【解决方案2】:

    我很确定这没有全局设置。这将是一个不错的功能,您应该 submit an issue 提出建议,如果您有时间提交拉取请求来实施。

    【讨论】:

      猜你喜欢
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2014-06-01
      相关资源
      最近更新 更多