Docker把我的MongoDB数据存储在哪里?

3

我已创建了以下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并创建了一些文档,然后重新启动了Compose。令人惊讶的是,数据得以保留。据我所知,如果没有配置卷,Docker会忘记数据。这种情况下,它将我的数据存储在哪里?


3
您的数据仍然存储在容器内。 docker-compose stop/start 不会移除已创建的容器,这就是为什么数据仍然存在的原因。如果您执行 docker-compose down(停止并移除容器),然后再执行 docker-compose up(创建并运行容器),数据将被清除。 - tgogos
如果您使用了Docker Compose的卷选项,数据库数据可以持久化存储在Docker容器之外,而是存储在Docker主机上。请参见https://dev59.com/DcHqa4cB1Zd3GeqP14qB#68552274。 - barrypicker
2个回答

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接