You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未加-v执行docker-compose down后命名卷数据丢失,原因何在?

问题解答
  • Docker没有删除你的命名卷。
  • 数据丢失的核心原因是挂载路径错误:
    MongoDB官方镜像的默认数据存储目录是/data/db,但你在compose配置里把命名卷挂载到了/usr/mongo-db/data——这个路径并不是MongoDB实际写入数据的位置。你之前添加的数据其实存在容器自身的可写层里,而非命名卷中。
  • 关于docker-compose命令的差异:
    • docker-compose stop仅停止容器运行,容器本身及可写层数据会保留,因此重启后数据还在。
    • docker-compose down默认会删除容器(连带容器可写层的数据),但不会删除命名卷;因为你的数据没存在命名卷里,所以容器被删后数据就丢失了。

修复方案

修改docker-compose.yml中的挂载路径,将命名卷指向MongoDB的默认数据目录:

version: "3"
services:
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
    ports:
      - "27017:27017"
    volumes:
      - mongo-db:/data/db  # 修正为MongoDB默认数据路径

volumes:
  mongo-db:

之后重新启动容器,数据就会持久化到命名卷中,即使执行docker-compose down再重启,数据也不会丢失。

内容的提问来源于stack exchange,提问作者avganka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:42:00