docker备份和恢复mongodb

创build仅数据容器:

docker create -v /mongodb_data --name mongodb_data mongo 

创buildmonogdb容器:

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

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

 --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 

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

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

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

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

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

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

  • build立一个新的仅数据容器并加载备份

  • 删除当前的mongo_db容器,并用新的仅数据容器重新创build一个新容器

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

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