如何使用 docker scout cache prune 命令管理缓存

DockerDockerBeginner
立即练习

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

简介

在这个实验中,你将学习如何管理 docker scout 命令使用的缓存。当 docker scout 分析镜像时,它会缓存软件物料清单(SBOM)和漏洞信息等数据,以提高性能。随着时间的推移,这个缓存可能会占用大量的磁盘空间。

你将探索 docker scout cache prune 命令及其选项。具体来说,你将学习如何清理临时数据、如何同时清理临时数据和缓存的 SBOM,以及如何在不确认的情况下强制进行清理过程。在本实验结束时,你将能够有效地管理 docker scout 缓存,释放磁盘空间,并确保在需要时使用最新的数据。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") subgraph Lab Skills docker/pull -.-> lab-555199{{"如何使用 docker scout cache prune 命令管理缓存"}} docker/prune -.-> lab-555199{{"如何使用 docker scout cache prune 命令管理缓存"}} end

理解 docker scout cache prune 的用途

在这一步中,我们将了解 docker scout cache prune 命令的用途。

当你使用 docker scout 分析镜像时,它会缓存软件物料清单(SBOM)和漏洞信息等数据,以加快后续分析的速度。随着时间的推移,这个缓存可能会变得很大,并占用大量的磁盘空间。docker scout cache prune 命令用于删除这些缓存的数据。

你可以把它想象成清理你的网页浏览器缓存。就像清理浏览器缓存可以释放空间并有时解决问题一样,清理 Docker Scout 缓存可以释放磁盘空间,并确保在需要时使用最新的数据。

docker scout cache prune 命令提供了控制删除哪些数据的选项。默认情况下,它会删除临时数据。你也可以选择删除缓存的 SBOM。

我们将在接下来的步骤中探索这些选项。目前,你只需了解这个命令是一个用于管理 docker scout 缓存数据的维护工具。

使用 docker scout cache prune 清理临时数据

在这一步中,我们将使用 docker scout cache prune 命令清理临时数据。

在清理之前,让我们模拟一些 docker scout 操作,以确保有数据可清理。我们将分析一个简单的镜像。

首先,拉取一个小镜像以供使用。

docker pull hello-world

你应该会看到表明镜像已成功拉取的输出。

现在,让我们对这个镜像运行 docker scout 分析。

docker scout cves hello-world

此命令会分析 hello-world 镜像的常见漏洞和披露(CVE)情况。尽管 hello-world 是一个非常简单的镜像,可能没有漏洞,但此命令仍会生成并缓存一些与分析过程相关的临时数据。

你会看到显示分析结果的输出(可能表明未发现漏洞)。

现在,让我们清理临时缓存数据。运行不带任何额外标志的 docker scout cache prune 命令。

docker scout cache prune

当你运行此命令时,会提示你确认操作。这是一项安全措施,以防止意外的数据丢失。

WARNING! This will remove all temporary cache data. Are you sure you want to continue? [y/N]

输入 y 并按回车键确认。

y

你应该会看到表明临时缓存数据已被清理以及回收的空间大小的输出。确切的输出可能会根据缓存的临时数据量而有所不同。

此命令专门针对 docker scout 操作期间生成的临时文件和数据,有助于保持缓存的整洁,而不会删除更持久的数据,如缓存的 SBOM(我们将在下一步中介绍)。

使用 docker scout cache prune --sboms 清理临时数据和缓存的 SBOM

在这一步中,我们将使用 docker scout cache prune --sboms 命令清理临时数据和缓存的软件物料清单(SBOM)。

在上一步中,我们仅清理了临时数据。缓存的 SBOM 是 docker scout 分析镜像以创建软件物料清单时生成的更持久的数据。保留缓存的 SBOM 可以加快对同一镜像的未来分析速度,但它们也会占用磁盘空间。

为了演示如何清理 SBOM,让我们首先分析一个镜像以生成 SBOM。我们将使用 ubuntu 镜像进行此操作。

docker pull ubuntu

此命令会拉取 ubuntu 镜像。

现在,让我们为 ubuntu 镜像生成并缓存 SBOM。

docker scout sbom ubuntu

此命令会为 ubuntu 镜像生成 SBOM 并将其缓存。你将在终端中看到 SBOM 的输出。

现在,让我们清理临时数据和缓存的 SBOM。我们将在 docker scout cache prune 命令中使用 --sboms 标志。

docker scout cache prune --sboms

同样,你会被提示确认操作。这次,警告信息会表明临时数据和缓存的 SBOM 都将被删除。

WARNING! This will remove all temporary cache data and cached SBOMs. Are you sure you want to continue? [y/N]

输入 y 并按回车键确认。

y

你应该会看到输出,表明临时缓存数据和缓存的 SBOM 已被清理,以及回收的空间大小。由于缓存的 SBOM 也被删除了,所以回收的空间应该比上一步更多。

使用 --sboms 标志可以更激进地清理缓存,当你需要释放更多磁盘空间或怀疑缓存的 SBOM 数据存在问题时,这非常有用。

使用 docker scout cache prune --force 强制清理缓存且无需确认

在这一步中,你将学习如何使用 --force 标志强制清理 Docker Scout 缓存,而无需确认提示。

默认情况下,docker scout cache prune 需要用户确认,以防止意外删除数据。但是,在自动化脚本或你确定要清理缓存的情况下,可以使用 --force 标志跳过确认提示。

首先,让我们再次生成一些缓存数据。这次我们将分析 alpine 镜像。

docker pull alpine

此命令会拉取 alpine 镜像。

现在,让我们对这个镜像运行 docker scout 分析,以生成一些缓存数据。

docker scout cves alpine

这会分析 alpine 镜像的 CVE 情况并缓存结果。

现在,我们将使用 --force 标志清理缓存。我们还将包含 --sboms 标志,以清理临时数据和缓存的 SBOM,因为这是强制清理的常见用例。

docker scout cache prune --sboms --force

注意,这次不会提示你确认操作。命令会立即执行并清理指定的缓存数据。

你应该会看到表明临时缓存数据和缓存的 SBOM 已被清理的输出,与上一步类似,但没有交互式提示。

使用 --force 时要谨慎,因为它绕过了安全确认。最好在非交互式环境中使用,或者在你绝对确定要进行清理操作时使用。

总结

在本次实验中,你了解了 docker scout cache prune 命令的用途,该命令用于管理 docker scout 分析生成的缓存数据,如软件物料清单(SBOM)和漏洞信息。此命令有助于释放磁盘空间,并确保你在需要时使用的是最新数据。

接着,你练习了使用该命令清理 docker scout cveshello-world 镜像进行分析时生成的临时数据。你还探索了 --sboms 标志,用于清理临时数据和缓存的 SBOM,以及 --force 标志,用于在清理时跳过确认提示。