清除 Docker mongodb 中的所有条目?
Posted
技术标签:
【中文标题】清除 Docker mongodb 中的所有条目?【英文标题】:Clear all entries in Docker mongodb? 【发布时间】:2016-06-24 17:42:05 【问题描述】:有没有一种简单的方法可以清除 docker 中运行的 mongodb 数据库?
或者可能将其全部删除并重新创建?
【问题讨论】:
你不能删除容器并重新创建另一个容器吗? 供参考,docker container ls --all
然后docker container rm <id>
,然后重新构建
【参考方案1】:
有很多方法:
与通常清除 mongodb 数据库的方式相同。你在 Docker 中运行它,但它毕竟是一个真正的 mongodb。请参阅 this 和 this。 如果您已使用 docker run 命令上的 -v 将数据库数据作为卷挂载到主机系统上,则只需清除此文件夹即可。 如果没有,数据将保存在容器中。您可以删除容器并重新创建它(docker rm container_name)。 或者在容器中运行一个shell并从容器的文件系统中删除数据(docker exec -it container_name bash)。关于最后一个选项,您不应该处于这种情况,因为您的数据应该存在于主机系统上,而您的容器应该是一次性的。
【讨论】:
您也可以使用 docker volume rmdocker exec -it mongodb_container bash -c "mongo db-name --eval 'db.dropDatabase()'"
【讨论】:
【参考方案3】:我有一个要求略有不同的案例:
docker-compose
需要身份验证
bash 变量扩展(容器运行时已设置环境变量MONGO_USER
& MONGO_PASSWORD
)
所以,对于任何可能需要一个方便的单线来验证和删除带有 docker
的 mongo db 的人,这里是?:
docker-compose exec mongo_container_name /bin/bash -c 'mongo database_name -u $MONGO_USER -p $MONGO_PASSWORD --authenticationDatabase admin --eval "db.dropDatabase();"'
如果你将Makefile
添加到“混合”中,它完全一样,但它需要$$
到变量:
db-reset:
docker-compose exec mongo_container_name /bin/bash -c 'mongo database_name -u $$MONGO_USER -p $$MONGO_PASSWORD --authenticationDatabase admin --eval "db.dropDatabase();"'
【讨论】:
以上是关于清除 Docker mongodb 中的所有条目?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB - 仅当嵌套数组中的所有条目存在时才更新它们