简介
在本实验中,你将学习如何使用 docker buildx history open
命令查看 Docker 构建的详细信息。首先,你将通过一个 Dockerfile
构建一个简单的 Docker 镜像,该文件描述了创建镜像的步骤。
完成镜像构建后,你将探索如何列出构建历史记录。最后,你将使用 docker buildx history open
命令直接在 Docker Desktop 中打开并检查特定构建的详细信息,从而获得构建过程的可视化全景视图。
在本实验中,你将学习如何使用 docker buildx history open
命令查看 Docker 构建的详细信息。首先,你将通过一个 Dockerfile
构建一个简单的 Docker 镜像,该文件描述了创建镜像的步骤。
完成镜像构建后,你将探索如何列出构建历史记录。最后,你将使用 docker buildx history open
命令直接在 Docker Desktop 中打开并检查特定构建的详细信息,从而获得构建过程的可视化全景视图。
在这一步中,你将学习如何使用 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
,然后按 Y
和 Enter
保存文件。
现在我们有了 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
:镜像层的 IDCREATED
:该层创建的时间戳CREATED BY
:创建该层的命令SIZE
:该层的大小COMMENT
:与该层相关的注释你会看到与我们 Dockerfile
中指令对应的条目:基础 Ubuntu 镜像、apt-get
命令和 CMD
指令。Dockerfile
中的每个 RUN
指令都会在镜像中创建一个新层。
理解构建历史能帮助你了解 Dockerfile
中每个指令如何影响最终镜像。这在优化镜像大小或排查构建问题时特别有用。
例如,你可以看到每个命令添加的大小,这有助于识别可能不必要的大体积层。
让我们尝试查看我们使用的基础镜像 ubuntu:latest
的历史记录。
docker history ubuntu:latest
这将显示官方 Ubuntu 镜像的历史记录,它比我们简单镜像的历史要长得多且复杂得多。这展示了基础镜像是如何从多个层构建而来的。
docker history
命令为你提供了深入了解 Docker 镜像构成的宝贵视角。
在本步骤中,我们将讨论如何通过 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
镜像。
点击镜像名称会打开该镜像的详细视图,通常包含以下内容:
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 中查看特定构建的详细信息,这为你提供了检查构建过程及其产物的可视化界面。