docker version 是什么
docker version 分两块打印客户端与服务端(守护进程)的信息,包括各自的版本号与 API 版本。它同时是最快的连通性自检:Client 段能打出来而 Server 段报错,说明命令装好了但连不上 daemon。
基本信息
| 用途 | 查看 CLI 与 daemon 版本、API 版本、运行平台 |
|---|---|
| 语法 | docker version [--format '{{.Server.Version}}'] |
| 关键字段 | Client.APIVersion 与 Server.APIVersion |
| 连不上时 | Client 段照常打印,Server 段报 cannot connect |
| 远程引擎 | DOCKER_HOST 或上下文指向远端时,看到的是远端的版本 |
典型使用场景
- 排查命令不存在或参数不识别:确认本地 CLI 是不是太旧,缺少对应子命令
- 看到 client version is too new 报错时,先比较两边 API 版本差多少
- CI 构建机自检:确认跑的是预期版本,而不是镜像里顺手带进来的旧版
- 查官方文档前先对版本:个别参数在不同小版本上的行为不一致
- 上报问题时一次性收集环境信息,客户端、引擎、API 版本齐了才好判断
示例
示例
docker version # 完整两块信息
docker version --format '{{.Server.Version}}' # 只取服务端版本
docker version --format '{{.Client.Version}}/{{.Server.Version}}'
docker info --format '{{.ServerVersion}} {{.Driver}}' # 顺带确认存储驱动Server 段关键行
| 字段 | 含义 | 异常时的表现 |
|---|---|---|
| Version | 守护进程版本 | 过旧会缺少新语法与新特性支持 |
| APIVersion | daemon 提供的 API 版本 | 低于 CLI 期望时,新命令直接报版本过新 |
| Go version | 编译引擎所用的 Go 版本 | 排查运行时疑难问题时需要一并提供 |
| OS/Arch | 引擎运行平台与架构 | 确认没连错机器,也没把架构搞混 |
| Experimental | 实验特性开关 | 文档里标注实验的配置项要先确认这里是 true |
用 Docker Desktop 或 DOCKER_CONTEXT 在多套引擎之间切换时,两边版本可能相差多个小版本;脚本里用到新字段前,先确认自己连的是哪一台。
临时设置 DOCKER_API_VERSION 去迁就旧 daemon 只是应急手段,长期使用会把真正的版本差距藏起来;正规做法是升级引擎或固定 CLI 版本。
Client 段来自本地二进制,Server 段来自守护进程上报的信息,两者版本不同本身是正常现象;只有当 API 版本差距大到新命令不被支持时才需要处理。