Jul*_*oro 2 backup mongodb docker
我有一个 mongoDB 的 docker 镜像。我想制作一个备份生产数据的脚本,并将其恢复到我的本地计算机中,这样我就可以拥有类似于生产的开发环境。
这是我的一部分docker-compose.yml
mongo:
image: "mongo:latest"
container_name: "espace_client_mongo"
volumes:
- mongo-data:/data/db
Run Code Online (Sandbox Code Playgroud)
我想导出mongo-data卷中包含的数据。
文件指出我可以这样做:
docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
Run Code Online (Sandbox Code Playgroud)
但我无法让它发挥作用。
当我运行它时,我得到:
ec2-user@espace-client-prod prod]$ docker run --rm --volumes-from espace_client_mongo -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar ./backup
tar: ./backup/backup.tar: file is the archive; not dumped
./backup/
./backup/Caddyfile
./backup/docker-compose.yml
[ec2-user@espace-client-prod prod]$ ls
backup.tar Caddyfile docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
它将把当前文件夹中的文件放入备份文件夹中。这不是我想要的。我想将docker卷的内容放在备份文件夹中。我误解了什么吗?
编辑:我想使用 mongo 工具( mongodump 和 mongorestore )备份和恢复数据
/var/lib/docker/volumes/mongo-data/_data您可以在主机上的目录\xc2\xb9 中找到要备份的数据。/data/db这就是您容器内的内容。
如果您已经将数据作为卷,则不必运行额外的 Docker 容器来备份数据。所以你只需要从sudo tar cvzf backup.tar.gz /var/lib/docker/volumes/mongo-data/_data你的主机运行。
更新
\n\n由于您想使用mongodump,只需按照您正在使用的 Docker 映像的官方文档进行操作即可:
$ docker exec some-mongo sh -c \'exec mongodump -d <database_name> --archive\' > /some/path/on/your/host/all-collections.archive\nRun Code Online (Sandbox Code Playgroud)\n\ndocker-compose.yml\xc2\xb9 请注意,此卷可能有另一个名称,如果您没有定义任何其他内容,则可能以运行该文件的文件夹名称为前缀。
| 归档时间: |
|
| 查看次数: |
7276 次 |
| 最近记录: |