【问题标题】:Clear all entries in Docker mongodb?清除 Docker mongodb 中的所有条目?
【发布时间】:2016-06-24 17:42:05
【问题描述】:

有没有一种简单的方法可以清除 docker 中运行的 mongodb 数据库?

或者可能将其全部删除并重新创建?

【问题讨论】:

  • 你不能删除容器并重新创建另一个容器吗?
  • 供参考,docker container ls --all 然后docker container rm <id>,然后重新构建

标签: mongodb docker


【解决方案1】:

有很多方法:

  • 与通常清除 mongodb 数据库的方式相同。你在 Docker 中运行它,但它毕竟是一个真正的 mongodb。请参阅 thisthis
  • 如果您已使用 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();"'
    

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多