bash
docker inspect --format='{{range .Mounts}}{{.Source}} -> {{.Destination}}{{"\n"}}{{end}}' 0c563bc1488c
这条命令的作用是列出容器 **0c563bc1488c** 的所有挂载映射关系 ,并以 宿主机路径 -> 容器内路径 的格式逐行输出。
命令拆解
| 部分 | 说明 |
|---|---|
.Mounts |
容器的挂载信息数组(比 .Config.Volumes 更完整,包含 bind mount、volume、tmpfs 等所有类型) |
range .Mounts |
遍历每一个挂载条目 |
.Source |
宿主机上的实际路径(bind mount 为宿主目录,named volume 为 Docker 管理的存储路径) |
.Destination |
容器内部的挂载目标路径 |
{``{"\n"}} |
手动插入换行符,确保每个挂载独占一行 |
end |
结束循环 |
输出示例解读
假设输出如下:
plain
/var/lib/docker/volumes/mydata/_data -> /app/data
/home/user/config.yml -> /etc/app/config.yml
tmpfs -> /tmp
逐行解读:
**/var/lib/docker/volumes/mydata/_data -> /app/data**
- 这是一个 Named Volume (命名卷)。宿主机上由 Docker 管理的存储目录映射到容器内的
/app/data。数据持久化,不随容器删除而丢失。
**/home/user/config.yml -> /etc/app/config.yml**
- 这是一个 Bind Mount(绑定挂载)。宿主机的具体文件/目录直接映射进容器。修改宿主机文件会实时反映到容器内,反之亦然。
**tmpfs -> /tmp**
- 这是一个 tmpfs 挂载 。仅存在于内存中,不写入磁盘,容器停止后数据消失。注意此时
.Source显示为tmpfs而非具体路径。
💡 实用提示
- 区分挂载类型 :如果想在输出中同时看到类型,可以加上
.Type:
bash
docker inspect --format='{{range .Mounts}}{{.Type}}: {{.Source}} -> {{.Destination}}{{"\n"}}{{end}}' 0c563bc1488c
输出形如:volume: /var/lib/... -> /app/data,便于快速判断是 volume、bind 还是 tmpfs。
**.Mounts**vs**.Config.Volumes**:.Config.Volumes只包含镜像 Dockerfile 中VOLUME指令声明的匿名卷,不包含-v/--mount运行时指定的绑定挂载和命名卷。排查挂载问题时始终使用.Mounts。- JSON 格式更易解析 :如果需要程序化处理,建议用
jq:
bash
docker inspect 0c563bc1488c | jq '.[0].Mounts[] | "\(.Type): \(.Source) -> \(.Destination)"'