实时还原

默认情况下,当 Docker 守护程序终止时,它会关闭正在运行的容器。 您可以配置守护程序,以便在守护程序 变得不可用。此功能称为实时还原。实时还原 选项有助于减少由于守护进程崩溃、计划内中断、 或升级。

注意

Windows 容器不支持实时还原,但它确实适用于 在适用于 Windows 的 Docker Desktop 上运行的 Linux 容器。

启用实时还原

有两种方法可以启用实时还原设置以使容器保持活动状态 当守护程序变得不可用时。请仅执行以下操作之一

  • 将配置添加到 daemon 配置文件中。在 Linux 上,这个 默认为 。在 Mac 或 Docker 的 Docker Desktop 上 Desktop for Windows 中,从任务栏中选择 Docker 图标,然后单击设置 - > Docker Engine/etc/docker/daemon.json

    • 使用以下 JSON 启用 .live-restore

      {
        "live-restore": true
      }
    • 重新启动 Docker 守护程序。在 Linux 上,您可以避免重新启动(并避免任何 停机时间)。如果使用 ,则使用命令 。否则,向进程发送信号。systemdsystemctl reload dockerSIGHUPdockerd

  • 如果您愿意,可以使用该标志手动启动该过程。不建议使用此方法,因为它不会 设置该环境或其他 Process Manager 将使用的环境 启动 Docker 进程时。这可能会导致意外行为。dockerd--live-restoresystemd

升级期间的实时还原

实时还原允许您使容器在 Docker 守护进程更新之间保持运行。 但仅在安装补丁版本 () 时受支持,不适用于 major () 守护进程升级。YY.MM.xYY.MM

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

重启时实时还原

live restore 选项仅适用于在以下情况下恢复容器:守护程序选项 例如网桥 IP 地址和图形驱动程序,没有更改。如果出现以下任何一个 守护进程级别的配置选项已更改,Live Restore 可能无法正常工作 并且您可能需要手动停止容器。

实时还原对正在运行的容器的影响

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

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

实时还原和 Swarm 模式

实时还原选项仅适用于独立容器,与 Swarm 无关 服务业。Swarm 服务由 Swarm 管理器管理。如果 Swarm 管理器是 不可用,则 Swarm 服务将继续在 Worker 节点上运行,但不能 管理,直到有足够的 Swarm 管理器可用于维持仲裁。