docker备份和恢复mongodb

Upv*_*ote 8 mongodb docker

仅创建数据容器:

docker create -v /mongodb_data --name mongodb_data mongo
Run Code Online (Sandbox Code Playgroud)

创建monogdb容器:

docker run --volumes-from mongodb_data --name mongo_db --restart always -d mongo
Run Code Online (Sandbox Code Playgroud)

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

--link mongo_db:mongo
Run Code Online (Sandbox Code Playgroud)

所以一切正常.现在我想根据文档备份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
Run Code Online (Sandbox Code Playgroud)

但是,创建的tar文件只有一个空/mongodb_data文件夹.该文件夹不包含单个文件.

任何想法都错了吗?我在ubuntu 14.04 LTS上使用docker 1.7.

小智 6

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

结果,您的mongodb数据未保存在仅数据的容器中。所以这是一种解决方法:

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

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

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

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

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