如何备份Docker数据

如何备份Docker数据
lustime如何备份Docker数据?
1.备份容器数据卷
由于我们用Docker搭建的时候,把需要的目录都挂载到本地了,Docker的镜像是可以直接下载的,所以其实我们只要备份这些挂载到本地的数据就好了。
1 | docker run --rm --volumes-from <container_name> -v $(pwd):/backup busybox tar cvf /backup/backup.tar /path/to/volume |
这条命令的含义是:
--volumes-from <container_name>
:从容器挂载数据卷。-v $(pwd):/backup
:把当前目录挂载到容器的/backup
目录。busybox tar cvf /backup/backup.tar /path/to/volume
:使用busybox
容器,将数据卷的内容打包成一个 tar 文件并保存到本地。
以Bitwarden为例:
Bitwarden安装
1 | docker run -d --name bitwarden -v /root/data/docker-data/bitwarden/bw-data/:/data/ -p 8000:80 bitwardenrs/server:latest |
Docker挂载目录打包
1 | docker inspect 容器名 |
查看Mounts,可以看到映射到本地的目录。
或者直接使用命令:
1 | docker run --rm --volumes-from bitwarden -v $(pwd):/backup busybox tar cvfz /backup/backup.tar /data |
SCP传输文件到另一台服务器
1 | scp /root/backup/backup.tar [email protected]:/root/data/docker-data/bitwarden |
解压、重名命
1 | tar -zxvf /root/data/docker-data/bitwarden/backup.tar |
2.备份镜像
使用 docker save
命令来保存镜像:
1 | docker save -o <backup_image.tar> <image_name> |
这样你可以将镜像保存为一个 tar 文件。之后你可以通过 docker load
命令将该镜像重新导入:
1 | docker load -i <backup_image.tar> |
3.备份所有容器、镜像和卷
你可以使用以下命令备份所有内容:
- 备份所有镜像:
1 | docker save $(docker images -q) -o all_images_backup.tar |
- 导出所有运行容器的配置(包括数据卷信息)
1 | docker ps --format '{{.Names}}' | xargs -I {} docker inspect {} > containers_backup.json |
4.恢复
- 恢复镜像:使用
docker load
加载备份的镜像。 - 恢复数据卷:使用 tar 工具将数据卷内容解压缩并恢复到指定路径。