如何使用 docker buildx history open 命令查看构建详情

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker buildx history open 命令查看 Docker 构建的详细信息。首先,你将通过一个 Dockerfile 构建一个简单的 Docker 镜像,该文件描述了创建镜像的步骤。

完成镜像构建后,你将探索如何列出构建历史记录。最后,你将使用 docker buildx history open 命令直接在 Docker Desktop 中打开并检查特定构建的详细信息,从而获得构建过程的可视化全景视图。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-555054{{"如何使用 docker buildx history open 命令查看构建详情"}} docker/inspect -.-> lab-555054{{"如何使用 docker buildx history open 命令查看构建详情"}} docker/images -.-> lab-555054{{"如何使用 docker buildx history open 命令查看构建详情"}} docker/build -.-> lab-555054{{"如何使用 docker buildx history open 命令查看构建详情"}} end

构建一个简单的 Docker 镜像

在这一步中,你将学习如何使用 Dockerfile 构建一个简单的 Docker 镜像。Dockerfile 是一个文本文件,其中包含用户可以通过命令行调用的所有命令来组装镜像。Docker 可以通过读取 Dockerfile 中的指令自动构建镜像。

首先,导航到 ~/project 目录,这是本实验的工作目录。

cd ~/project

现在,让我们创建一个简单的 Dockerfile。我们将在 ~/project 目录中创建一个名为 Dockerfile 的文件。

nano Dockerfile

nano 编辑器中,粘贴以下内容:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y cowsay
CMD ["cowsay", "Hello, Docker!"]

让我们分解这个 Dockerfile

  • FROM ubuntu:latest:该指令指定了我们新镜像的基础镜像。我们使用最新版本的 Ubuntu 操作系统作为起点。
  • RUN apt-get update && apt-get install -y cowsay:该指令在镜像构建过程中执行命令。我们更新软件包列表并安装 cowsay 软件包,这是一个简单的程序,可以在牛的对话气泡中显示文本。
  • CMD ["cowsay", "Hello, Docker!"]:该指令提供了从该镜像启动容器时要执行的默认命令。在本例中,它将运行 cowsay 命令,并附带参数 "Hello, Docker!"。

Ctrl + X,然后按 YEnter 保存文件。

现在我们有了 Dockerfile,可以构建 Docker 镜像了。使用 docker build 命令。-t 标志用于为镜像打标签,格式为 name:tag。命令末尾的 . 告诉 Docker 在当前目录中查找 Dockerfile

docker build -t my-cowsay-image:latest .

你将看到输出,显示 Docker 正在逐层构建镜像,执行 Dockerfile 中的指令。这个过程可能需要一些时间,因为它会下载基础镜像并安装 cowsay 软件包。

构建完成后,你可以使用 docker images 命令列出可用镜像,以验证镜像是否已创建。

docker images

你应该能在输出中看到 my-cowsay-image

最后,让我们从刚刚构建的镜像中运行一个容器,看看它是否按预期工作。

docker run my-cowsay-image:latest

你应该能看到 cowsay 命令的输出:

 _______
< Hello, Docker! >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

这确认了我们的 Docker 镜像已正确构建,并且默认命令按预期执行。

查看构建历史

在这一步中,你将学习如何查看 Docker 镜像的历史记录,这会显示构成镜像的各层以及创建每层所用的命令。这对于理解镜像的构建过程和调试非常有用。

我们将使用 docker history 命令后接镜像名称或 ID。在上一步中,我们构建了一个名为 my-cowsay-image 的镜像。让我们查看它的历史记录。

docker history my-cowsay-image:latest

输出将显示一个包含多列的表格:

  • IMAGE:镜像层的 ID
  • CREATED:该层创建的时间戳
  • CREATED BY:创建该层的命令
  • SIZE:该层的大小
  • COMMENT:与该层相关的注释

你会看到与我们 Dockerfile 中指令对应的条目:基础 Ubuntu 镜像、apt-get 命令和 CMD 指令。Dockerfile 中的每个 RUN 指令都会在镜像中创建一个新层。

理解构建历史能帮助你了解 Dockerfile 中每个指令如何影响最终镜像。这在优化镜像大小或排查构建问题时特别有用。

例如,你可以看到每个命令添加的大小,这有助于识别可能不必要的大体积层。

让我们尝试查看我们使用的基础镜像 ubuntu:latest 的历史记录。

docker history ubuntu:latest

这将显示官方 Ubuntu 镜像的历史记录,它比我们简单镜像的历史要长得多且复杂得多。这展示了基础镜像是如何从多个层构建而来的。

docker history 命令为你提供了深入了解 Docker 镜像构成的宝贵视角。

在 Docker Desktop 中查看特定构建

在本步骤中,我们将讨论如何通过 Docker Desktop 查看特定镜像构建的详细信息。虽然 LabEx 环境提供的是命令行界面,但 Docker Desktop 作为一款流行的图形化工具,能提供更直观的 Docker 交互方式。

注意: Docker Desktop 是运行在本地机器(Windows、macOS 或带桌面环境的 Linux)上的图形化应用程序。而 LabEx 环境是通过网页浏览器访问的云端虚拟机,不具备运行 Docker Desktop 所需的图形化桌面环境。因此,你无法在当前 LabEx 环境中直接"在 Docker Desktop 中打开特定构建"。

不过,了解在常规开发环境中如何使用 Docker Desktop 完成此操作仍然很重要。

在 Docker Desktop 中,你需要导航至"Images"(镜像)区域。这里会显示系统中的所有 Docker 镜像列表,你可以找到之前构建的 my-cowsay-image:latest 镜像。

点击镜像名称会打开该镜像的详细视图,通常包含以下内容:

  • 概览: 镜像的基本信息,如大小、创建日期和 ID
  • 层: 镜像层的可视化展示,类似于 docker history 的输出,但通常提供更详细的图形化界面。你可以检查每层执行的命令以及添加或修改的文件
  • 标签: 与镜像关联的标签列表
  • 漏洞: 镜像中已知安全漏洞的信息(如果启用了扫描功能)

相比命令行输出,Docker Desktop 的图形界面能更轻松地探索镜像内容和构建历史,特别是对于包含多层的复杂镜像。

虽然你无法在当前 LabEx 环境中执行此操作,但了解 Docker Desktop 的这一功能对你的 Docker 学习之旅很有价值。

在 LabEx 环境中完成本步骤,我们只需理解这个概念即可。

总结

在本实验中,你学习了如何使用 Dockerfile 构建一个简单的 Docker 镜像。你创建了一个包含以下指令的 Dockerfile:使用 Ubuntu 作为基础镜像、安装 cowsay 软件包,并设置默认运行 cowsay 的命令。随后你使用 docker build 命令构建镜像并为其打上标签。

完成镜像构建后,你将探索如何使用 docker buildx history 查看构建历史,然后通过 docker buildx history open 命令直接在 Docker Desktop 中查看特定构建的详细信息,这为你提供了检查构建过程及其产物的可视化界面。