创建仅数据容器:
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
所以一切正常。现在我想根据文档备份 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。
最佳答案
问题在于您的数据容器。您使用不存储任何 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
关于mongodb - docker备份和恢复mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31370253/