最直接、最完整的方式是使用 docker inspect 命令,它可获取容器(无论运行或已停止)的底层 JSON 元数据,涵盖网络、挂载、状态、环境变量、启动命令、入口点、镜像关联等全部配置细节,并支持 -f 提取字段、jq 美化或导出文件。
最直接、最完整的方式是使用 docker inspect 命令。它不依赖容器是否运行,只要容器存在(哪怕已停止),就能输出其底层 JSON 格式的全部元数据,涵盖网络、挂载、状态、环境变量、启动命令、镜像关联等所有配置细节。
命令简单,支持按名或 ID 查询:
输出是结构清晰的缩进 JSON,适合快速浏览。注意:已删除的容器无法查询。
不用通读长 JSON,用 -f(即 --format)配合 Go 模板语法直取所需值:
docker inspect -f '{{.NetworkSettings.IPAddress}}' nginx-app
docker inspect -f '{{.NetworkSettings.Ports}}' nginx-app
docker inspect -f '{{.Mounts}}' nginx-app
docker inspect -f '{{.State.Status}}' nginx-app
docker inspect -f '{{.Config.Cmd}}' nginx-app
docker inspect -f '{{.Config.Entrypoint}}' nginx-app
字段路径区分大小写,嵌套结构用点号逐级访问;例如自定义网络下的 IP 要写成 .NetworkSettings.Networks.mynet.IPAddress。
原始 JSON 过长时,可用外部工具辅助处理:
jq 美化并过滤(需提前安装):docker inspect nginx-app | jq '.[0].Config.Env'
docker inspect nginx-app > nginx-info.json
docker inspect -f '{{.Name}} {{.State.Status}} {{.NetworkSettings.IPAddress}}' nginx-app
决定容器实际运行逻辑的核心元数据集中在几个字段:
.Env)、默认命令(.Cmd)、入口点(.Entrypoint)、工作目录(.WorkingDir)、暴露端口(.ExposedPorts).Networks)、端口绑定(.Ports).Status)、启动/停止时间(.StartedAt/.FinishedAt)、健康检查结果(.Health.Status)不复杂但容易忽略