docker 将我的 MongoDB 数据存储在哪里?

Posted

技术标签:

【中文标题】docker 将我的 MongoDB 数据存储在哪里?【英文标题】:Where does docker stores my MongoDB data? 【发布时间】:2022-01-01 23:12:17 【问题描述】:

我创建了以下docker-compose.yml 文件

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

然后开始

sudo docker-compose up

然后连接到 mongo 并创建了一些文档。然后我重新启动了我的撰写。令人惊讶的是,数据仍然存在。据我所知,如果没有配置卷,Docker 就会忘记数据。这有改变吗?

在这种情况下我的数据保存在哪里?

【问题讨论】:

您的数据保留在容器内。 docker-compose stop/start 不会删除创建的容器,这就是数据仍然存在的原因。如果你docker-compose down(停止并删除)然后docker-compose up(创建并运行)数据将会丢失。 如果您使用了 docker compose volumes 选项,则数据库数据可以保存在 docker 容器之外,而是保存在 docker 主机上。见***.com/questions/68517126/… 【参考方案1】:

默认情况下,MongoDB 的默认数据目录路径为\data\db 并保留在您的容器内,因此只要容器没有完全移除,您就可以恢复您的容器,数据仍然保留在那里。在这种情况下,如果您通过docker-compose stop/start 重新启动 MongoDB,它不会删除您的容器,只是停止它们并重新启动,因此您的数据可能会保留。除非您使用 docker-compose down/up,这将完全删除并重新创建新容器,否则您的数据将被擦除。

【讨论】:

以上是关于docker 将我的 MongoDB 数据存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我将 Meteor 应用程序转换为使用 Docker 时,我的 MongoDB 数据会消失?

Docker compose api无法连接到主机MongoDB数据库

无法将 MongoDB 与 NestJS ( Docker ) 连接

为啥我的rest api post请求不能将我的数组保存在我的mongodb数据库中

使用 docker-compose 将 NodeJS-App 连接到 MongoDB

Docker最全教程——MongoDB容器化