简介
在本实验中,你将学习如何使用 docker checkpoint create
命令来保存运行中容器的状态。我们将首先启动一个简单的 Ubuntu 容器,作为我们执行检查点操作的目标对象。
完成容器设置后,你将为该运行中的容器创建一个检查点,有效捕获其当前状态。随后我们将验证检查点是否成功创建。最后,你将探索如何创建检查点并指定自定义目录来存储检查点数据。这个动手实践将展示 Docker 容器检查点的实际应用。
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在本实验中,你将学习如何使用 docker checkpoint create
命令来保存运行中容器的状态。我们将首先启动一个简单的 Ubuntu 容器,作为我们执行检查点操作的目标对象。
完成容器设置后,你将为该运行中的容器创建一个检查点,有效捕获其当前状态。随后我们将验证检查点是否成功创建。最后,你将探索如何创建检查点并指定自定义目录来存储检查点数据。这个动手实践将展示 Docker 容器检查点的实际应用。
在这一步骤中,我们将启动一个简单的 Docker 容器,后续将对其进行检查点操作。检查点功能允许你保存运行中容器的状态并在之后恢复,这对于容器迁移、调试或创建快照非常有用。
首先,我们需要从 Docker Hub 拉取 ubuntu
镜像。这个镜像体积小,适合我们的演示。请在 LabEx 环境中打开终端。
docker pull ubuntu
你将看到镜像正在下载的输出信息。下载完成后,可以通过列出镜像来验证该镜像已本地可用。
docker images
在镜像列表中查找 ubuntu
。
现在,让我们基于 ubuntu
镜像启动一个容器。我们将在容器内运行一个保持容器持续运行的简单命令,例如 sleep infinity
。我们还会为容器命名以便后续引用,这里命名为 my-checkpoint-container
。
docker run -d --name my-checkpoint-container ubuntu sleep infinity
-d
参数表示以分离模式运行容器(后台运行),--name
参数为容器指定名称。ubuntu
是我们使用的基础镜像,而 sleep infinity
是容器内运行的保持存活的命令。
运行命令后,Docker 会输出完整的容器 ID。你可以通过列出活动容器来验证容器是否正在运行。
docker ps
你应该能在列表中看到名为 my-checkpoint-container
的容器,状态显示为 Up
。这确认了我们的容器正在运行,已准备好进行后续的检查点操作。
在这一步骤中,我们将为上一步启动的运行中容器创建检查点。为容器创建检查点会将其当前状态(包括内存、进程和文件系统变更)保存到磁盘。这使你可以暂停容器,并在之后从检查点创建时的精确状态恢复运行。
要创建检查点,我们使用 docker checkpoint create
命令。该命令需要指定容器名称和检查点名称。我们将检查点命名为 my-first-checkpoint
。
docker checkpoint create my-checkpoint-container my-first-checkpoint
此命令需要一些时间执行,因为 Docker 正在保存容器状态。如果命令执行成功,你将不会看到太多输出信息。
创建检查点后,容器 my-checkpoint-container
仍会保持运行状态。检查点操作不会停止容器,它只是创建容器状态的快照。
在下一步骤中,我们将验证检查点是否已成功创建并可用。
在这一步骤中,我们将验证上一步创建的检查点是否存在并与我们的容器相关联。Docker 提供了查看特定容器检查点列表的命令。
要查看 my-checkpoint-container
容器的检查点列表,请使用 docker checkpoint ls
命令后接容器名称:
docker checkpoint ls my-checkpoint-container
该命令将显示指定容器可用的检查点列表。你应该能在输出中看到 my-first-checkpoint
被列出,这确认了检查点已成功创建,并可在需要时用于恢复容器状态。
能够列出检查点对于管理它们非常重要,特别是当你为单个容器创建了多个检查点,或为不同容器创建了检查点时。
在下一步骤中,我们将探索如何在其他目录中创建检查点。
在这一步骤中,我们将学习如何在指定目录中创建检查点。默认情况下,Docker 会将检查点存储在 Docker 数据根目录的标准位置中。但有时你可能希望将检查点存储在其他位置,例如不同的磁盘或共享存储中。
要为检查点指定自定义目录,我们需要在 docker checkpoint create
命令中使用 --checkpoint-dir
参数。首先,我们在主目录下创建一个新目录用于存储检查点:
mkdir ~/project/my-checkpoints
现在,我们可以为运行中的容器 my-checkpoint-container
创建另一个检查点,但这次我们将指定 ~/project/my-checkpoints
目录作为检查点存储位置。我们将这个新检查点命名为 my-second-checkpoint
:
docker checkpoint create --checkpoint-dir ~/project/my-checkpoints my-checkpoint-container my-second-checkpoint
该命令将在 ~/project/my-checkpoints
目录中创建检查点数据。你可以查看该目录内容来确认检查点文件:
ls ~/project/my-checkpoints/my-second-checkpoint
你应该能看到检查点过程创建的若干文件和目录。
尽管我们指定了自定义目录,该检查点仍然与容器相关联。你可以再次列出容器的检查点,将会看到 my-first-checkpoint
和 my-second-checkpoint
都被列出:
docker checkpoint ls my-checkpoint-container
这表明 Docker 会追踪所有检查点,无论它们存储在什么位置。使用自定义目录让你在管理检查点数据时拥有更大的灵活性。
在本实验中,我们学习了如何使用 docker checkpoint create
命令来保存运行中容器的状态。我们首先使用 docker run -d --name my-checkpoint-container ubuntu sleep infinity
命令启动了一个名为 my-checkpoint-container
的简单 ubuntu
容器,确保它以分离模式运行。我们通过 docker ps
命令验证了容器的运行状态。
随后,我们为这个运行中的容器创建了检查点。这个过程使用 docker checkpoint create
命令来捕获容器的当前状态,包括其内存和进程,以便后续恢复。我们还探讨了如何验证检查点是否成功创建,以及如何指定自定义目录来存储检查点数据。