如何使用 docker desktop module ls 命令列出模块

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker version 命令列出 Docker Desktop 模块。我们将探索查看这些信息的不同方式,包括列出所有模块、以 JSON 格式显示输出,以及仅提取模块 ID。这个动手实践将帮助你理解 Docker 安装的各个组件,以及如何获取它们的信息。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/version -.-> lab-555144{{"如何使用 docker desktop module ls 命令列出模块"}} end

列出所有 Docker Desktop 模块

在这一步中,我们将学习如何使用 docker version 命令列出所有 Docker Desktop 模块。docker version 命令提供了关于 Docker 安装的详细信息,包括客户端和服务器组件,以及构成 Docker Desktop 安装的各个模块。

要列出所有 Docker Desktop 模块,请打开终端并运行以下命令:

docker version

该命令会输出大量关于你 Docker 安装的信息。注意查找 ClientServer 等部分。在这些部分中,你将找到关于各种组件和模块的详细信息。

例如,输出可能类似这样(具体输出可能因你的 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 安装中的不同组件及其版本。

以 JSON 格式列出 Docker Desktop 模块

在上一步中,我们使用 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 模块的 ID

在前面的步骤中,我们学习了如何列出所有 Docker Desktop 模块以及如何将输出格式化为 JSON。现在,让我们探索如何仅提取特定信息,例如模块的 Git 提交 ID。当你只需要特定数据用于脚本或自动化时,这非常有用。

我们可以再次使用 --format 标志配合自定义模板来实现这一目标。通过检查上一步的 JSON 输出,我们可以看到 Git 提交 ID 位于 Server.Engine.GitCommitServer.Containerd.GitCommitServer.Runc.GitCommitServer.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,为快速识别提供了简洁的输出。