Linux入门教程:Docker管理指南(4) – daemon停止时保持容器继续运行,从Docker En


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

启用live-restore选项

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

如果daemon已经运行且你不想停止它,你可以把配置添加到daemon配置文件。例如,linux系统默认配置文件是/etc/docker/daemon.json。

{ "live-restore": true }

编辑好之后需要发送一个SIGHUP信号到daemon进程来重载配置。 启动docker daemon时,传递–live-restore参数:

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模式,编排功能管理任务并使容器根据服务规范运行。

相关内容