Mounts数组中Name非空且Anonymous为false的是命名卷,Name为空且Anonymous为true的是匿名卷;命名卷数据随容器删除保留,匿名卷通常被清理,且仅Type为"volume"的条目需比对。
inspect 的 mounts 数组能清晰反映容器挂载的卷类型、来源和生命周期行为。匿名卷与命名卷在该数组中结构相似但关键字段不同,比对它们的核心在于观察 source、name、type 和 anonymous 字段,再结合容器启停、删除时的行为差异来判断生命周期归属。
运行 docker inspect <container-id> 后,在 Mounts 数组中逐项比对:
Name 字段(如 "Name": "myapp-data"),Source 是 Docker 卷存储路径(如 /var/lib/docker/volumes/myapp-data/_data),Type 为 volume,Anonymous 为 false
Name 为空字符串或缺失,Source 是一个带随机哈希的路径(如 /var/lib/docker/volumes/8a1f6b2e.../_data),Type 同样为 volume,但 Anonymous 字段为 true(Docker 20.10+ 显式暴露)仅看 Mounts 不足以确认生命周期,需配合实际操作验证:
docker rm <container> 后,命名卷的 Source 目录仍存在,数据保留;匿名卷的 Source 目录通常被自动清理(除非容器用 --volumes 删除)-v myapp-data:/app/data,新容器 Mounts 中会复用原 Name;若只写 -v /app/data,则生成新的匿名卷条目,Name 为空,Source 路径不同Mounts 数组是运行时快照,需搭配卷管理命令确认归属:
docker volume ls —— 命名卷会显示在列表中,匿名卷不会出现docker volume inspect myapp-data —— 可看到创建时间、驱动、挂载点等,确认是否被其他容器引用ls /var/lib/docker/volumes/ —— 可发现未被自动清理的哈希命名目录,对应 Mounts.Source 中的路径Mounts 数组中 Type: "bind" 的条目不属于卷范畴,其生命周期完全由宿主机路径决定,与匿名/命名卷无关。比对前应先过滤掉 Type !== "volume" 的项,避免混淆。