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一个新容器
或者,您可以修改您的mongodb
configuration,将所有数据从/data/db
复制到/mongodb_data
后,将默认目录更改为/mongodb_data
。 您可能会发现这个有用的更改MongoDB数据存储目录
您可以使用此图像为许多作业提供docker容器(导入,导出,转储)