首页/云/Docker 容器速查/docker inspect -f 模板取值
基础命令50 条

docker inspect -f 模板取值

用 Go 模板从 inspect 结果里精确取字段:退出码、OOM 标记、挂载列表、网络地址等,一行命令完成判断,免去翻 JSON。

Docker 容器速查云更新于 2026-10-13

模板取值是什么

容器元数据的完整输出很长,用模板可以只取关心的字段:状态、退出码、是否被内存超限杀死、挂载列表、网络地址等。它让判断变成一行命令,也让脚本取值不再依赖表格对齐,是排障与自动化里最常用的技巧之一。

基本信息

书写方式在格式化参数后写模板表达式
常用字段状态、退出码、是否被超限杀死、重启次数、挂载、网络、启动时间
整段输出可用内置函数把某个子树原样输出为 JSON
循环写法对数组字段用遍历语法逐项渲染
大小写字段名大小写敏感,写错会直接报无法求值

典型使用场景

  • 判断退出原因:一眼看退出码与被超限杀死的标记,确定是程序问题还是资源问题
  • 检查重启情况:查看重启次数与策略,判断服务是否处在崩溃循环
  • 核对挂载:列出宿主路径到容器路径的映射,确认数据目录真的挂出来了
  • 读网络地址:在脚本里取出容器地址,做健康检查或配置上游
  • 批量巡检:对一批容器循环执行模板,输出成表格或写入监控

常用示例

常用示例
docker inspect -f '{{.State.Status}} 退出码={{.State.ExitCode}}' web
docker inspect -f '{{.State.OOMKilled}} 重启策略={{.HostConfig.RestartPolicy.Name}}' web
docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{"\n"}}{{end}}' web
docker inspect -f '{{json .Config.Env}}' web        # 整段环境变量
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web

排查必背字段

字段含义怎么用
State.Status当前状态区分运行中、已停止、已创建
State.ExitCode退出码非零即异常退出,按应用语义判断
State.OOMKilled是否被内存超限杀死为真时先调内存限制再谈优化
RestartCount自动重启次数持续增长说明存在崩溃循环
Mounts已生效的挂载确认数据目录落在卷还是宿主目录
NetworkSettings.Networks网络与地址判断容器间能否互访
State.StartedAt 与 FinishedAt启动与结束时间与日志、监控时间线对齐

写模板的经验

  • 先不带模板输出一次完整内容,看清结构再写表达式
  • 一次写多个表达式,减少反复调用命令的次数
  • 需要换行或制表符时用字符串拼进去,避免输出挤成一团
  • 把常用模板存成脚本或别名,团队里统一口径
  • 升级引擎后回归验证一次,字段位置可能变化
字段名写错会直接报无法求值,不会静默返回空值,这一点比表格解析友好。用它做脚本取值,出错时能第一时间暴露。
环境变量与网络字段里可能含内部地址与凭据,把命令输出贴到外部前先过滤一遍,避免信息泄露。

易错点

  • 字段名大小写或路径写错直接报错,先输出原始结构确认路径再回来写模板
  • 跨版本字段有增删,升级后脚本取值失败,发布前要回归验证
  • 用模板取出的数值直接当整机指标使用,忽略了容器视角与宿主视角的区别
  • 把带敏感信息的字段输出到公共日志或工单里,造成信息泄露

数据来源与参考

  • Docker 官方 CLI 参考:docker inspect(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌