如何使用 docker checkpoint create 命令为运行中的容器创建检查点

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何使用 docker checkpoint create 命令来保存运行中容器的状态。我们将首先启动一个简单的 Ubuntu 容器,作为我们执行检查点操作的目标对象。

完成容器设置后,你将为该运行中的容器创建一个检查点,有效捕获其当前状态。随后我们将验证检查点是否成功创建。最后,你将探索如何创建检查点并指定自定义目录来存储检查点数据。这个动手实践将展示 Docker 容器检查点的实际应用。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/run -.-> lab-555066{{"如何使用 docker checkpoint create 命令为运行中的容器创建检查点"}} docker/ps -.-> lab-555066{{"如何使用 docker checkpoint create 命令为运行中的容器创建检查点"}} docker/create -.-> lab-555066{{"如何使用 docker checkpoint create 命令为运行中的容器创建检查点"}} docker/pull -.-> lab-555066{{"如何使用 docker checkpoint create 命令为运行中的容器创建检查点"}} docker/images -.-> lab-555066{{"如何使用 docker checkpoint create 命令为运行中的容器创建检查点"}} end

启动待检查点的容器

在这一步骤中,我们将启动一个简单的 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-checkpointmy-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 命令来捕获容器的当前状态,包括其内存和进程,以便后续恢复。我们还探讨了如何验证检查点是否成功创建,以及如何指定自定义目录来存储检查点数据。