跳至内容

第 8 章: 容器快照

在本章中,您需要以非特权用户身份运行命令(如果您从本书的开头就开始使用,则为“lxdadmin”)。

容器快照与快照服务器(稍后会详细介绍)可能是运行生产 LXD 服务器最重要的方面。快照确保快速恢复。在更新特定容器上运行的主要软件时,最好将它们用作故障保险。如果更新过程中出现任何问题导致该应用程序崩溃,您只需恢复快照,您就可以在几秒钟的停机时间内恢复运行。

作者使用 LXD 容器来运行 PowerDNS 公共面向服务器,得益于在每次更新之前都进行快照,更新这些应用程序的过程变得不那么令人担忧。

您甚至可以在容器运行时对其进行快照。

快照过程

首先使用以下命令获取 ubuntu-test 容器的快照

lxc snapshot ubuntu-test ubuntu-test-1

在这里,您将快照称为“ubuntu-test-1”,但您可以随意命名。要确保您拥有快照,请对容器执行lxc info

lxc info ubuntu-test

您已经查看过信息屏幕。如果滚动到底部,您会看到

Snapshots:
  ubuntu-test-1 (taken at 2021/04/29 15:57 UTC) (stateless)

成功!我们的快照已就位。

进入 ubuntu-test 容器

lxc exec ubuntu-test bash

使用touch 命令创建一个空文件

touch this_file.txt

退出容器。

在将容器恢复到创建文件之前的状态之前,恢复容器最安全的方法(尤其是如果进行了很多更改),是先停止它

lxc stop ubuntu-test

恢复它

lxc restore ubuntu-test ubuntu-test-1

再次启动容器

lxc start ubuntu-test

如果您再次进入容器并查看,您创建的“this_file.txt”文件现在已消失。

当您不再需要快照时,可以将其删除

lxc delete ubuntu-test/ubuntu-test-1

警告

您应该始终在容器运行时删除快照。为什么呢?因为lxc delete 命令也可以用来删除整个容器。如果我们在上面的命令中“ubuntu-test”之后不小心按了回车键,并且容器已停止,则该容器将被删除。不会给出任何警告,它只是按照您的要求执行。

但是,如果容器正在运行,您会收到此消息

Error: The instance is currently running, stop it first or pass --force

因此,请始终在容器运行时删除快照。

在接下来的章节中,您将

  • 设置自动创建快照的过程
  • 设置快照过期时间,以便它在一段时间后消失
  • 设置将快照自动刷新到快照服务器

作者:史蒂文·斯宾塞

贡献者:埃塞奎尔·布鲁尼,甘娜·日尔诺娃