清除 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 rm 删除卷【参考方案2】:
docker 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 - 仅当嵌套数组中的所有条目存在时才更新它们

如何删除drupal中的缓存db条目?

mongoDb 查找文档中的条目数和按字段区分的条目

从不同集合中的数据创建新条目 (MongoDb)

如何查询 mongodb 中的日期,以便删除时差小于 1 小时的条目?

MongoDB 使用 ensureIndex 删除重复项,但保留最后一个条目而不是第一个条目