实时还原

默认情况下,当 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.否则,请发送SIGHUPsignal 传递给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 管理器可用于维持仲裁。

APP信息