如何使用 docker inspect 动态获取镜像暴露的存储卷路径

小芳君_7173

小芳君_7173

2026-06-26

754人浏览

原创

使用 docker inspect 获取镜像暴露的存储卷路径需区分镜像声明的 volume(静态,如 /var/cache/nginx)和容器实际挂载路径(动态,通过 .mounts.source 获取主机真实路径)。

如何使用 docker inspect 动态获取镜像暴露的存储卷路径

使用 docker inspect 获取镜像暴露的存储卷路径,关键在于区分“镜像声明的卷”(VOLUME 指令)和“容器实际挂载的卷路径”。镜像本身不保存运行时路径,只声明哪些目录应被挂载为卷;真正可查的路径在容器启动后生成。因此,“动态获取”需针对正在运行或已创建的容器,而非镜像本身。

查看镜像中声明的 VOLUME 路径

镜像构建时通过 VOLUME 指令声明的目录,可通过 inspect 镜像获取,但这是静态声明,不是实际路径:

  • 运行 docker inspect nginx:alpine | jq '.[0].Config.Volumes' 或直接用 docker inspect nginx:alpine --format='{{.Config.Volumes}}'
  • 输出类似 map[/var/cache/nginx:{} /var/log/nginx:{}],表示镜像建议将这两个路径作为数据卷
  • 注意:这些路径未绑定主机目录,也不含真实路径,仅作声明用途

获取容器实际挂载的卷路径(含主机路径)

只有容器创建/运行后,Docker 才分配或映射具体路径。此时 inspect 容器才能拿到真实挂载信息:

Crawl4ai Docker Skill
Crawl4ai Docker Skill

Docker化网页爬虫服务,支持REST API,可进行网页爬取与抓取,智能内容提取(基于 L...)

下载
  • 启动容器时若未显式指定 -v,Docker 会为声明的 VOLUME 自动创建匿名卷,路径可在 Mounts 字段查到
  • 执行 docker inspect my-nginx-container --format='{{range .Mounts}}{{println .Type "→" .Source "→" .Destination}}{{end}}'
  • 典型输出:volume → /var/lib/docker/volumes/abc123.../_data → /var/log/nginx,其中 .Source 是主机上的真实路径
  • 若用了命名卷或绑定挂载,.Source 会显示对应主机路径或卷名

快速提取某容器中某个目标路径对应的主机位置

例如想查容器内 /var/log/nginx 实际映射到主机哪:

  • 用 Go template 精确匹配:docker inspect my-nginx-container --format=" {{ range .Mounts }}{{ if eq .Destination \"/var/log/nginx\" }}{{ .Source }}{{ end }}{{ end }}"
  • 返回空表示未挂载;返回路径(如 /var/lib/docker/volumes/applogs/_data)即为主机端位置
  • 对匿名卷,该路径不可直接读写(权限/命名空间限制),建议优先使用 docker volume inspect 查卷详情

配合 volume inspect 获取更完整信息

若 .Mounts.Source 是一个卷名(非绝对路径),可进一步 inspect 卷本身:

  • 先提取卷名:docker inspect my-nginx-container --format='{{range .Mounts}}{{if eq .Destination "/var/log/nginx"}}{{.Name}}{{end}}{{end}}'
  • 再查卷:docker volume inspect vol-name --format='{{.Mountpoint}}',得到主机上可访问的完整路径
  • 此方式适用于命名卷,结果稳定且便于脚本化处理

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

745

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5699

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6717

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2613

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

279

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

451

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

420

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

305

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

465

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习