实时还原
默认情况下,当 Docker 守护程序终止时,它会关闭正在运行的容器。 您可以配置守护程序,以便在守护程序 变得不可用。此功能称为实时还原。实时还原 选项有助于减少由于守护进程崩溃、计划内中断、 或升级。
注意
Windows 容器不支持实时还原,但它确实适用于 在适用于 Windows 的 Docker Desktop 上运行的 Linux 容器。
启用实时还原
有两种方法可以启用实时还原设置以使容器保持活动状态 当守护程序变得不可用时。请仅执行以下作之一。
将配置添加到 daemon 配置文件中。在 Linux 上,这个 默认为
/etc/docker/daemon.json
.在 Mac 或 Docker 的 Docker Desktop 上 Desktop for Windows 中,从任务栏中选择 Docker 图标,然后单击设置 - > Docker Engine。使用以下 JSON 启用
live-restore
.{ "live-restore": true }
重新启动 Docker 守护程序。在 Linux 上,您可以避免重新启动(并避免任何 停机时间)。如果您使用
systemd
,然后使用命令systemctl reload docker
.否则,请发送SIGHUP
signal 传递给dockerd
过程。
如果您愿意,可以启动
dockerd
使用--live-restore
旗。不建议使用此方法,因为它不会 设置环境systemd
或其他进程管理器将使用 启动 Docker 进程时。这可能会导致意外行为。
升级期间的实时还原
实时还原允许您使容器在 Docker 守护进程更新之间保持运行。
但仅在安装补丁版本 (YY.MM.x
),不适用于
主要 (YY.MM
) 守护进程升级。
如果在升级过程中跳过发行版,守护进程可能无法恢复其 连接到容器。如果守护进程无法恢复连接,则 无法管理正在运行的容器,您必须手动停止它们。
重启时实时还原
live restore 选项仅适用于在以下情况下恢复容器:守护程序选项 例如网桥 IP 地址和图形驱动程序,没有更改。如果出现以下任何一个 守护进程级别的配置选项已更改,Live Restore 可能无法正常工作 并且您可能需要手动停止容器。
实时还原对正在运行的容器的影响
如果守护程序长时间关闭,则正在运行的容器可能会填满 FIFO log 守护程序正常读取的日志。完整日志会阻止容器记录更多 数据。默认缓冲区大小为 64K。如果缓冲区已满,则必须重新启动 Docker 守护程序来刷新它们。
在 Linux 上,您可以通过更改/proc/sys/fs/pipe-max-size
.您无法在 Docker Desktop 上修改
Mac 或 Docker Desktop for Windows。
实时还原和 Swarm 模式
实时还原选项仅适用于独立容器,与 Swarm 无关 服务业。Swarm 服务由 Swarm 管理器管理。如果 Swarm 管理器是 不可用,则 Swarm 服务将继续在 Worker 节点上运行,但不能 管理,直到有足够的 Swarm 管理器可用于维持仲裁。