docker备份和恢复mongodb

时间:2015-07-12 16:55:16

标签: mongodb docker

仅创建数据容器:

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 mongo_db:mongo

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

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。

2 个答案:

答案 0 :(得分:4)

问题是您的数据仅容器。您使用不存储任何mongo db数据的路径/mongodb_data创建卷。默认情况下,mongo db存储路径为/data/db(根据this #Where to Store Data Section)

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

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

  • 按照您提到的doc

  • 进行备份
  • 构建新的仅数据容器并加载备份

  • 删除当前mongo_db容器并使用新数据容器
  • 重新创建一个新容器

或者,您可以修改mongodb配置,将所有数据从/mongodb_data复制到/data/db后,将默认目录更改为/mongodb_data。您可能会发现这个有用的Changing MongoDB data store directory

答案 1 :(得分:0)

您可以使用此image为许多作业(导入,导出,转储)提供docker容器