简介
在本实验中,你将学习如何使用 docker version
命令列出 Docker Desktop 模块。我们将探索查看这些信息的不同方式,包括列出所有模块、以 JSON 格式显示输出,以及仅提取模块 ID。这个动手实践将帮助你理解 Docker 安装的各个组件,以及如何获取它们的信息。
在本实验中,你将学习如何使用 docker version
命令列出 Docker Desktop 模块。我们将探索查看这些信息的不同方式,包括列出所有模块、以 JSON 格式显示输出,以及仅提取模块 ID。这个动手实践将帮助你理解 Docker 安装的各个组件,以及如何获取它们的信息。
在这一步中,我们将学习如何使用 docker version
命令列出所有 Docker Desktop 模块。docker version
命令提供了关于 Docker 安装的详细信息,包括客户端和服务器组件,以及构成 Docker Desktop 安装的各个模块。
要列出所有 Docker Desktop 模块,请打开终端并运行以下命令:
docker version
该命令会输出大量关于你 Docker 安装的信息。注意查找 Client
和 Server
等部分。在这些部分中,你将找到关于各种组件和模块的详细信息。
例如,输出可能类似这样(具体输出可能因你的 Docker 版本和安装情况而异):
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.41
Go version: go1.16.15
Git commit: f2213a1
Built: Thu Oct 27 00:18:36 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.16.15
Git commit: 3056e8c
Built: Thu Oct 27 00:17:23 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.8
GitCommit: 9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
在这个输出中,你可以看到关于 Docker Engine、containerd、runc 和 docker-init 的信息。这些是构成 Docker 环境的一些关键模块。docker version
命令是一个有用的工具,可以帮助你了解 Docker 安装中的不同组件及其版本。
在上一步中,我们使用 docker version
命令列出了 Docker Desktop 模块。默认输出是人类可读的格式,但有时你可能需要结构化格式(如 JSON)的输出以便进行脚本处理或进一步分析。
docker version
命令支持 --format
标志,允许你使用 Go 的 text/template 包来指定输出格式。要获取 JSON 格式的输出,你可以使用 json .
模板。
在终端中运行以下命令:
docker version --format '{{json .}}'
该命令会输出与 docker version
相同的信息,但会格式化为 JSON 对象。{{json .}}
部分是一个模板,告诉 Docker 将整个输出(.
)格式化为 JSON。
输出将是单行的 JSON 数据,格式化后可能如下所示(为可读性进行了格式化):
{
"Client": {
"Version": "20.10.21",
"ApiVersion": "1.41",
"GoVersion": "go1.16.15",
"GitCommit": "f2213a1",
"Built": "Thu Oct 27 00:18:36 2022",
"OsArch": "linux/amd64",
"Context": "default",
"Experimental": true
},
"Server": {
"Engine": {
"Version": "20.10.21",
"ApiVersion": "1.41",
"MinAPIVersion": "1.12",
"GoVersion": "go1.16.15",
"GitCommit": "3056e8c",
"Built": "Thu Oct 27 00:17:23 2022",
"OsArch": "linux/amd64",
"Experimental": false
},
"Containerd": {
"Version": "1.6.8",
"GitCommit": "9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b"
},
"Runc": {
"Version": "1.1.4",
"GitCommit": "v1.1.4-0-g5fd4c4d"
},
"DockerInit": {
"Version": "0.19.0",
"GitCommit": "de40ad0"
}
}
}
这个 JSON 输出包含与默认输出相同的信息,但采用了结构化格式,便于程序解析。当你需要在脚本中从 docker version
输出提取特定信息时,这特别有用。
在前面的步骤中,我们学习了如何列出所有 Docker Desktop 模块以及如何将输出格式化为 JSON。现在,让我们探索如何仅提取特定信息,例如模块的 Git 提交 ID。当你只需要特定数据用于脚本或自动化时,这非常有用。
我们可以再次使用 --format
标志配合自定义模板来实现这一目标。通过检查上一步的 JSON 输出,我们可以看到 Git 提交 ID 位于 Server.Engine.GitCommit
、Server.Containerd.GitCommit
、Server.Runc.GitCommit
和 Server.DockerInit.GitCommit
下。
我们可以构建一个模板来提取这些特定字段。在终端中运行以下命令:
docker version --format 'Engine GitCommit: {{.Server.Engine.GitCommit}}\nContainerd GitCommit: {{.Server.Containerd.GitCommit}}\nRunc GitCommit: {{.Server.Runc.GitCommit}}\nDockerInit GitCommit: {{.Server.DockerInit.GitCommit}}'
让我们分解这个模板:
Engine GitCommit: {{.Server.Engine.GitCommit}}
:这部分从 Server
对象内的 Engine
对象提取 GitCommit
值\n
:添加换行符以分隔每个模块的输出Containerd GitCommit: {{.Server.Containerd.GitCommit}}
:提取 containerd 的 GitCommit
Runc GitCommit: {{.Server.Runc.GitCommit}}
:提取 runc 的 GitCommit
DockerInit GitCommit: {{.Server.DockerInit.GitCommit}}
:提取 docker-init 的 GitCommit
输出将显示每个指定模块的 Git 提交 ID,类似这样:
Engine GitCommit: 3056e8c
Containerd GitCommit: 9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b
Runc GitCommit: v1.1.4-0-g5fd4c4d
DockerInit GitCommit: de40ad0
这展示了 --format
标志和 Go 模板的强大功能,可以从 Docker 命令中提取特定数据。你可以自定义模板来提取 docker version
输出中的任何可用字段。
在本实验中,我们学习了如何使用 docker version
命令列出 Docker Desktop 模块。我们探索了如何显示所有模块及其详细信息,这些信息提供了关于 Docker 安装中不同组件(如 Docker Engine、containerd、runc 和 docker-init)及其版本的重要信息。
我们还学习了如何以 JSON 格式列出 Docker Desktop 模块,这对于程序化处理以及与其他工具的集成非常有用。最后,我们介绍了如何仅列出 Docker Desktop 模块的 ID,为快速识别提供了简洁的输出。