码头备份和恢复mongodb

创建仅数据容器:

docker create -v /mongodb_data --name mongodb_data mongo

创建monogdb容器:

docker run --volumes-from mongodb_data --name mongo_db --restart always -d mongo

然后在我自己的容器中使用mongodb,我使用link命令:

--link mongo_db:mongo

所以一切正常。 现在我想根据文档备份mongodb:http://docs.docker.com/userguide/dockervolumes/#backup-restore-or-migrate-data-volumes和这个命令:

docker run --volumes-from mongodb_data -v $(pwd):/backup busybox tar cvf /backup/backup.tar /mongodb_data

然而,创建的tar文件只有一个空的/mongodb_data文件夹。 该文件夹不包含单个文件。

任何想法什么是错的? 我在ubuntu 14.04 LTS上使用docker 1.7。


问题是你的数据只有容器。 您可以使用path /mongodb_data创建卷,该路径不存储任何mongo db数据。 默认情况下,mongo数据库存储路径是/data/db (根据此#存储数据部分)

因此,您的mongodb数据不会保存在您的仅数据容器中。 所以这是一个解决方法:

  • 复制/data/db到你的mongodb容器中的/mongodb_data docker exec -it mongo_db bash然后cp -r /data/db/* /mongodb_data/

  • 按照您提到的文档进行备份

  • 构建一个新的仅用于数据的容器并加载备份

  • 删除当前的mongo_db容器并用新的仅数据容器重新创建一个新容器
  • 或者,您可以修改您的mongodb配置,将所有数据从/data/db复制到/mongodb_data后将缺省目录更改为/mongodb_data 。 您可能会发现这个有用的更改MongoDB数据存储目录


    您可以使用此图像为许多作业提供码头容器(导入,导出,转储)

    链接地址: http://www.djcxy.com/p/86565.html

    上一篇: docker backup and restore mongodb

    下一篇: Simple string compression: removing consecutive repeating substrings