Docker部署MongoDB未显式配置卷时,数据具体存储在什么位置?
问题解答
1. Docker规则没有变更,是记忆的适用场景存在偏差
你记忆中「未配置volume容器数据会丢失」的规则成立的前提是容器被删除重建,而不是容器重启:
- 普通的容器重启(
docker restart、docker-compose stop后再执行docker-compose up)不会销毁容器的可写层,写入的数据本身就会保留 - 额外的原因:官方
mongo镜像的Dockerfile中默认声明了VOLUME /data/db,就算你没有在compose配置中手动写卷挂载规则,Docker启动容器时也会自动为/data/db目录创建匿名卷挂载,只要你没有主动删除卷,就算容器被删除重建,只要匿名卷还在,重新启动时数据也会保留(docker-compose默认不会主动删除匿名卷,只有执行docker-compose down -v或者手动清理卷才会删除)
2. 你的MongoDB数据存储位置
数据存在Docker自动创建的匿名卷中,你可以通过以下步骤查看具体路径:
- 先找到运行中的mongo容器ID/名称:
sudo docker ps | grep mongo - 执行命令查看挂载信息:
sudo docker inspect 容器ID/名称 | grep Mounts -A 20 - 输出中
Source字段对应的路径就是宿主机上的实际存储路径,默认位于/var/lib/docker/volumes/[随机生成的卷ID]/_data下
你也可以直接执行sudo docker volume ls查看所有匿名卷,找到对应mongo服务的卷后通过sudo docker volume inspect 卷名查看存储路径。
内容的提问来源于stack exchange,提问作者Dims
相关产品推荐
相关产品推荐

