Docker管理指南(4) – daemon停止时保持容器继续运行

默认下,当docker daemon停止时,随即停止正在运行的容器。从Docker Engine 1.12开始,你可以配置daemon如果daemon变为不可用时容器保持继续运行。这个减少由于daemon崩溃,计划中断或升级导致的容器停机时间。

启用live-restore选项

有两种方式来启用live-restore设置来保持容器当daemon变为不可用时继续运行:

  • 如果daemon已经运行且你不想停止它,你可以把配置添加到daemon配置文件。例如,linux系统默认配置文件是/etc/docker/daemon.json。
    1. {
    2. "live-restore": true
    3. }

    编辑好之后需要发送一个SIGHUP信号到daemon进程来重载配置。

  • 启动docker daemon时,传递–live-restore参数:
    1. sudo dockerd --live-restore
  • 升级期间的live restore

    live restore功能支持在从一个小版本升级到下一个版本时恢复容器到daemon。例如从docker engine 1.12.1升级到1.13.2。
    如果在升级期间跳过版本,daemon可能无法恢复容器的连接。如果daemon无法恢复连接,则它将忽略正在运行的容器,这时你必须手动管理它们。daemon不会关闭断开连接的容器。

    重启时的live restore

    live restore选项仅可以恢复daemon重启前后配置相同选项的daemon。例如,如果daemon重启之后使用了不同的bridge IP或不同的graphdrive,则live restore无法工作。

    live restore对正在运行的容器的影响

    daemon长时间离线会影响到运行中的容器。容器进行向daemon写FIFO日志。如果由于daemon变不可用而无法处理这个输出,buffer将会被填满进而阻塞容器进一步写日志。默认的buffer大小为64K
    你必须重启docker来刷新buffers。
    可以通过改变/proc/sys/fs/pipe-max-size值来更改内核buffer大小。

    live restore与swarm模式

    live restore选项与docker engine swarm模式不兼容。当docker engine运行在swarm模式,编排功能管理任务并使容器根据服务规范运行。

    标签:容器Docker 发布于:2019-11-20 00:49:29