Docker 生产环境之配置容器 - 停止守护进程时保留容器

原文地址

默认情况下,当 Docker 守护进程终止时,会关闭正在运行的容器。从 Docker Engine 1.12 开始,可以配置守护进程,使容器在守护进程不可用时保持运行。这个功能被称为 live restore。live restore 选项有助于减少由于守护进程崩溃,计划停机或升级导致的容器停机时间。

注意:Windows 容器不支持 live restore,但对于 Docker for Windows 上运行的 Linux 容器也是适用的。

1. 开启 live restore

有两种方式可以开启 live restore 设置,使容器在守护进程不可用时保持活动状态。下面两种方式二选一

  • 在守护进程配置文件中设置。在 Linux 上默认是 /etc/docker/daemon.json, 在 Docker for Mac 或 Docker for Windows选择任务栏的 Docker 图标并点击 Preferences -> Daemon -> Advanced。
    • 使用下面的 JSON 来开启 live-restore:

      {
      "live-restore": true
      }
    • 重启 Docker 守护进程。在 Linux 上 可以通过重新加载 Docker 守护进程来避免重启(同时避免容器停止)。如果你使用 systemd,使用命令 systemctl reload docker。否则,向 dockerd 进程发送 SIGHUP 信号。
  • 也可以在手动启动 dockerd 进程时指定 --live-restore 参数。不建议使用此方法,因为它不会在启动 Docker 进程时设置 systemd 或其他进程管理器使用的环境。这可能会导致意外的行为。

2. 升级守护进程时的 live restore

live restore 功能支持将容器恢复到守护进程以便从一个次要版本升级到下一个次要版本,例如从 Docker 1.12.1 升级到 1.12.2 时。

如果在升级过程中跳过版本,守护进程可能无法恢复其与容器的连接。如果守护程序无法恢复连接,则无法管理正在运行的容器,必须手动停止它们。

3. 重启时的 live restore

只有守护进程选项(例如网桥 IP 地址和图形驱动程序)未发生更改时 live restore 选项才可以用于还原容器。如果任何这些守护进程级配置选项已更改,则 live restore 可能不起作用,可能需要手动停止容器。

4. live restore 对运行容器的影响

如果守护进程停止很长时间,正在运行的容器可能会填满守护程序通常读取的 FIFO 日志。日志填满后会阻止容器记录更多数据。默认缓冲区大小为 64K。如果缓冲区填满,必须重新启动 Docker 守护程序来刷新它们。

在 Linux 上,可以通过更改 /proc/sys/fs/pipe-max-size 来修改内核的缓冲区大小。不能修改 Docker for Mac 或 Docker for Windows 的缓冲区大小。

5. Live restore 和 swarm 模式

live restore 选项仅适用于独立容器,不适用于 swarm 服务。swarm 服务由 swarm manager 管理。如果 swarm manager 不可用,swarm 服务将继续在 worker 节点上运行但无法管理,只有有足够多的可用 swarm manager 时才能维护(If swarm managers are not available, swarm services continue to run on worker nodes but cannot be managed until enough swarm managers are available to maintain a quorum.)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值