docker 版本
| 描述 | 显示 Docker 版本信息 |
|---|---|
| 用法 | docker version [OPTIONS] |
描述
version 命令打印所有独立版本化的 Docker 组件的当前版本号。使用
--format 选项来自定义
输出。
version 命令 (docker version) 输出 Docker 组件的版本号,而 --version 标志 (docker --version) 输出您正在使用的 Docker CLI 的版本号。
默认输出
默认输出显示分为两部分的版本信息;Client 部分包含有关 Docker CLI 和客户端组件的信息,而 Server 部分包含有关 Docker Engine 及其使用的组件(如 containerd 和 runc OCI Runtimes)的信息。
显示的信息可能因 Docker 安装方式及使用的组件而异。以下示例展示了在运行 Docker Desktop 的 macOS 机器上的输出:
$ docker version
Client: Docker Engine - Community
Version: 23.0.3
API version: 1.42
Go version: go1.19.7
Git commit: 3e7cbfd
Built: Tue Apr 4 22:05:41 2023
OS/Arch: darwin/amd64
Context: default
Server: Docker Desktop 4.19.0 (12345)
Engine:
Version: 23.0.3
API version: 1.42 (minimum version 1.12)
Go version: go1.19.7
Git commit: 59118bf
Built: Tue Apr 4 22:05:41 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.20
GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
runc:
Version: 1.1.5
GitCommit: v1.1.5-0-gf19387a
docker-init:
Version: 0.19.0
GitCommit: de40ad0
客户端和服务器版本
Docker 使用客户端/服务器架构,这允许您在本地机器上使用 Docker CLI 来控制运行在远程机器上的 Docker 引擎,该远程机器可以是(例如)运行在云中或虚拟机内的机器。
下面的示例将 Docker CLI 切换为使用名为 remote-test-server 的上下文,该上下文在 Linux 服务器上运行旧版本的 Docker Engine:
$ docker context use remote-test-server
remote-test-server
$ docker version
Client: Docker Engine - Community
Version: 23.0.3
API version: 1.40 (downgraded from 1.42)
Go version: go1.19.7
Git commit: 3e7cbfd
Built: Tue Apr 4 22:05:41 2023
OS/Arch: darwin/amd64
Context: remote-test-server
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:29:16 2020
OS/Arch: linux/amd64
containerd:
Version: v1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
API 版本与版本协商
客户端使用的 API 版本取决于 Docker CLI 连接的 Docker Engine。当连接 Docker Engine 时,Docker CLI 和 Docker Engine 会进行 API 版本协商,并选择 Docker CLI 和 Docker Engine 都支持的最高 API 版本。
例如,如果 CLI 连接的是 Docker Engine 19.03 版本,它会降级到 API 版本 1.40(请参阅 API 版本矩阵 了解 Docker Engine 支持的 API 版本):
$ docker version --format '{{.Client.APIVersion}}'
1.40
请注意,API 版本也可以使用 DOCKER_API_VERSION
环境变量进行覆盖,这对于调试目的很有用,并会禁用
API 版本协商。以下示例演示了一个设置了
DOCKER_API_VERSION 环境变量的环境。取消设置该环境
变量可移除覆盖,并重新启用 API 版本协商:
$ env | grep DOCKER_API_VERSION
DOCKER_API_VERSION=1.39
$ docker version --format '{{.Client.APIVersion}}'
1.39
$ unset DOCKER_API_VERSION
$ docker version --format '{{.Client.APIVersion}}'
1.42
选项
| 选项 | 默认 | 描述 |
|---|---|---|
-f, --format | 使用自定义模板格式化输出: 'json': 以 JSON 格式打印 'TEMPLATE': 使用给定的 Go 模板打印输出。 参考https://docs.docker.com/go/formatting/有关使用模板格式化输出的更多信息 |
示例
格式化输出 (--format)
格式化选项 (--format) 使用 Go 模板对输出进行美化打印,
这允许您自定义输出格式,或从输出中获取特定信息。有关格式的详细信息,请参阅
格式化命令和日志输出
页面。
获取服务器版本
$ docker version --format '{{.Server.Version}}'
23.0.3
获取客户端 API 版本
以下示例打印客户端使用的 API 版本:
$ docker version --format '{{.Client.APIVersion}}'
1.42
显示的版本是客户端和 Docker 引擎之间协商的 API 版本。有关更多信息,请参阅上面的API 版本和版本协商。
转储原始JSON数据
$ docker version --format '{{json .}}'
{"Client":"Version":"23.0.3","ApiVersion":"1.42", ...}