docker version

描述顯示 Docker 版本資訊
用法docker version [OPTIONS]

描述

version 命令列印所有獨立版本化 Docker 元件的當前版本號。使用 --format 選項可自定義輸出。

version 命令 (docker version) 輸出 Docker 元件的版本號,而 --version 標誌 (docker --version) 輸出您正在使用的 Docker CLI 的版本號。

預設輸出

預設輸出將所有版本資訊分為兩個部分;Client 部分包含有關 Docker CLI 和客戶端元件的資訊,而 Server 部分包含有關 Docker Engine 和 Docker Engine 使用的元件(例如 containerd 和 runc OCI 執行時)的資訊。

顯示的資訊可能因您安裝 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 Engine,遠端機器可以是(例如)在雲中或虛擬機器內部執行的機器。

以下示例將 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.net.tw/go/formatting/

示例

格式化輸出 (--format)

格式化選項 (--format) 使用 Go 模板漂亮地列印輸出,這允許您自定義輸出格式,或從輸出中獲取特定資訊。有關格式的詳細資訊,請參閱格式化命令和日誌輸出頁面。

獲取伺服器版本

$ docker version --format '{{.Server.Version}}'

23.0.3

獲取客戶端 API 版本

以下示例列印客戶端使用的 API 版本

$ docker version --format '{{.Client.APIVersion}}'

1.42

顯示的版本是客戶端和 Docker Engine 之間協商的 API 版本。有關更多資訊,請參閱上方的API 版本和版本協商

轉儲原始 JSON 資料

$ docker version --format '{{json .}}'

{"Client":"Version":"23.0.3","ApiVersion":"1.42", ...}