Docker Compose卷问题:无法找到dbdata与mongodbdata持久化数据
解决Docker命名卷找不到实际存储路径的问题
为什么搜不到mongodbdata和dbdata?
你在docker-compose.yml里定义的这两个卷是Docker命名卷,不是宿主机上随便可见的普通目录——它们由Docker引擎统一管理,存在Docker的内部数据目录里,所以直接搜文件系统找不到同名的目录/文件。
怎么找到它们的实际存储位置?
1. 先列出所有Docker管理的命名卷
执行这条命令:
docker volume ls
输出里会包含你定义的mongodbdata、dbdata和grafana_data,类似这样:
DRIVER VOLUME NAME local grafana_data local mongodbdata local dbdata
2. 查看单个卷的详细路径
比如要查mongodbdata的实际位置,执行:
docker volume inspect mongodbdata
输出里的Mountpoint字段就是它在宿主机上的真实路径,示例输出:
[ { "CreatedAt": "2024-05-20T10:30:00Z", "Driver": "local", "Labels": { "com.docker.compose.project": "你的项目名", "com.docker.compose.volume": "mongodbdata" }, "Mountpoint": "/var/lib/docker/volumes/mongodbdata/_data", "Name": "mongodbdata", "Options": null, "Scope": "local" } ]
/var/lib/docker/volumes/mongodbdata/_data就是MongoDB数据实际存在的地方,dbdata用同样的命令就能查到路径。
额外提示
- 如果想让数据直接存在你指定的宿主机目录里,可以修改
docker-compose.yml的卷配置,比如把mongodbdata:/data/db改成./mongodbdata:/data/db(当前目录下的mongodbdata文件夹),或者/自定义路径:/data/db,这样就能直接在指定目录找到数据了。 - 注意
/var/lib/docker目录一般需要root权限才能访问,查看时可能要加sudo。
内容的提问来源于stack exchange,提问作者Robert Dyck
相关产品推荐
相关产品推荐

