1.1 查询系统状态的命令词条:version 与 info


1.1 查询系统状态的命令词条:version 与 info

本节摘要:docker version 报告客户端与服务端各自的版本,docker info 报告守护进程的运行时全景。这组命令零参数、零风险,却是排查"命令不存在""连不上守护进程"这类问题的第一现场。本节给出完整词条、字段级解读与真实会话。

本节是全书的开篇词条,位于壹部的起点:先让 Docker 介绍自己,后面的镜像与容器词条才有稳定的落脚点。读完这节,你拿到任何一台陌生机器,都有一条固定的"望闻问切"路径。

词条卡:docker version

docker version [OPTIONS]

义项(常用选项):

选项 含义 使用时机
无参数 输出客户端与服务端两段完整信息 日常检查
--format 字符串 用 Go 模板抽取指定字段 脚本里取版本号
--help 显示本命令帮助 忘记选项时

使用现场一:一台新机器的第一次提问

$ docker version Client: Version: 26.1.4 API version: 1.45 Go version: go1.21.11 OS/Arch: linux/amd64 Context: default Server: Engine Version: 26.1.4 storage driver: overlay2

解读这段输出的要点有三个。第一,输出分成 Client 与 Server 两段——docker 命令行只是个客户端,真正干活的是后台的守护进程,两段版本可以不同,比如装了新版客户端、守护进程还是旧的。第二,API version 是客户端与守护进程协商用的接口版本,两边差距过大时会直接报错。第三,如果 Server 段没有打出来,而是一段报错,说明守护进程没起来,这属于 1.2 的安装验证要解决的问题。

使用现场二:脚本里只取一个版本号

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

--format 后面跟的是 Go 模板,.Server.Version 表示取服务端版本字段。这个写法在 CI 脚本里很常见:判断版本是否满足要求,只留一行干净输出,省去解析整段文本。

版本错位本身值得一提。客户端与守护进程可以分别升级,于是出现"新客户端问老服务端"的组合:客户端带着新的 API 版本去协商,服务端只认得旧的,差距过大就报"client version too new"一类错误。处理思路有固定的优先级:先确认两边版本号(本节命令),再看 API version 是否匹配,最后才考虑降级客户端或升级服务端。把判断顺序记牢,遇到报错就不会先去重装 Docker。

使用现场三:守护进程没起来时长什么样

$ docker version Client: Version: 26.1.4 OS/Arch: linux/amd64 Server: ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

注意 Client 段照常输出——客户端本身工作正常,失败的是与守护进程的连接。这条报错是全书出场率最高的错误之一,遇到它先去查服务状态,而不是怀疑命令敲错了。

词条卡:docker info

docker info [OPTIONS]

义项--format 同样支持模板抽取;无参数时输出几十行系统级事实。它回答的问题比 version 宏观得多:这台机器上 Docker 跑成什么样了。

使用现场四:巡检一台跑了半年的主机

$ docker info Client: Version: 26.1.4 Server: Containers: 14 Running: 9 Paused: 0 Stopped: 5 Images: 63 Server Version: 26.1.4 Storage Driver: overlay2 Cgroup Driver: systemd Cgroup Version: 2 Kernel Version: 6.1.0-23-amd64 Operating System: Debian GNU/Linux 12 (bookworm) Total Memory: 15.36 GiB Docker Root Dir: /var/lib/docker

逐块读这份输出。Containers 块给出容器总量与运行、暂停、停止的分布——Running 长期为零而 Stopped 一直堆积,说明有该清理的尸体(捌部的 prune 词条处理)。Images 是本地镜像数量,配合 Docker Root Dir 所在磁盘的剩余空间看,能预判"磁盘被镜像吃满"这类事故。Storage Driver 是 overlay2 就对了,老机器上若还是 aufs 或 device mapper,升级时要格外小心。Cgroup Driver 与 Cgroup Version 影响资源限制参数的行为,装 Kubernetes 的同学尤其要核对这一行。

使用现场五:用模板只看容器数量

$ docker info --format '{{.Containers}} {{.Running}}' 14 9

两个数字依次是容器总数与运行中数量。写监控脚本或巡检报告时,这种单行输出最省事。

字段对照:version 与 info 怎么分工

维度 docker version docker info
回答的问题 跑的是什么版本 跑成什么状态了
独有信息 API 版本、Go 版本、Context 容器/镜像计数、存储驱动、内核、内存、根目录
典型场景 升级前核对、兼容性确认 巡检、容量评估、故障初判
输出体量 十来行 几十行

⚠️ 常见坑:把 docker version 当成 docker info 用,盯着它找容器数量——两命令回答的问题不同,字段互不重叠,混用只会白翻一遍输出。

本节要点回顾

  • docker version 分两段:Client 是命令行本身,Server 是守护进程;Server 段缺失即守护进程连接失败。
  • docker info 是巡检入口:容器分布、镜像数量、存储驱动、根目录磁盘,四个事实一眼扫完。
  • --format 模板让两条命令都能输出单行结果,是脚本化的标准姿势。
  • 报错先分类:"Cannot connect to the Docker daemon" 属于环境问题,不是命令用法问题。
  • 字段要看上下文:同一个 Storage Driver 字段,日常无感,升级与排障时是关键证据。

下一节把镜头拉到装机当天:怎么用一组命令确认 Docker 装好、能用、开机自启。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U