在 Docker 上运行的 Mongodb 正在重新启动后擦除集合
Posted
技术标签:
【中文标题】在 Docker 上运行的 Mongodb 正在重新启动后擦除集合【英文标题】:Mongodb running on Docker is wiping the collection after restart 【发布时间】:2022-01-20 10:07:22 【问题描述】:我必须构建一个小型应用程序,从 docker 上运行的 MongoDB 读取数据并将其用于进一步的处理。
问题是在我关闭 docker 后,数据库的本地实例也被删除了。我怎样才能阻止它?
MONGODB_URI
是mongodb://localhost:27017
,我应该在 docker 命令中添加哪些属性来避免它。我应该避免使用本地主机吗? docker-compose
让我感到困惑,所以我使用 Dockerfile。
那么,docker run 命令究竟可以通过什么来避免它呢?是其中之一吗?
Commands: docker run -d --name mongo-on-docker -p 27017:27017 mongo
docker run -d --name sample --link mongo-on-docker web app
还要永久保存我应该使用什么数据目录?
【问题讨论】:
安装卷做/data/db
。此信息可在他们的docker hub page 上找到。
您似乎并不真正了解容器和 Docker 的不同对象和关系。您应该检查 Dockerfile 和 docker-compose 之间的区别,以及卷(绑定挂载和命名卷)
【参考方案1】:
Docker 容器在退出前已经死亡。对于存储数据,您应该将命名卷、文件夹或文件挂载到容器中。 在 MongoDB 案例中尝试:
docker run --rm -ti -v mongo_data:/data/db mongo bash
其中 mongo_data 是一个特殊的 Docker 实体,可以作为文件夹挂载到容器中。同时包含在不同的容器中。
不是新的: How to set docker mongo data volume
【讨论】:
以上是关于在 Docker 上运行的 Mongodb 正在重新启动后擦除集合的主要内容,如果未能解决你的问题,请参考以下文章
在 alpine linux 上执行 mongodb 二进制文件
使用 mongodb compass GUI 连接到 docker 内的 Mongodb
当 Marathon 在同一主机上运行所有 docker 应用程序时,docker 服务停止