以下是在CentOS上备份Docker数据的常用方法:
Docker默认数据存储路径为/var/lib/docker,可通过tar命令打包备份:
sudo tar -czvf docker-backup-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/docker
将备份文件存储到安全路径(如外部硬盘或云存储)。
使用docker save命令将镜像保存为tar文件:
docker images -q | xargs docker save -o /backup/docker-images-$(date +%Y%m%d%H%M%S).tar
或备份单个镜像:
docker save -o my-image-backup.tar my-image:tag
通过docker export导出容器文件系统快照(不包含元数据):
docker ps -aq | xargs -I {} docker export -o container-{}.tar {}
或使用docker commit将容器保存为新镜像后备份:
docker ps -aq | xargs -I {} docker commit {} backup-image-{}
docker save -o backup-images.tar backup-image-*
docker volume lsdocker volume ls | awk '{print $1}' | xargs -I {} sh -c 'docker run --rm -v {}:/$$_volume alpine tar czvf /backup/{}_backup.tar /$$_volume'
导出网络配置为JSON文件:
docker network ls | awk '{print $1}' | xargs -I {} docker network inspect {} > network-{}.json
可编写脚本整合上述操作,例如:
#!/bin/bash
# 备份镜像
docker images -q | xargs docker save -o /backup/docker-images-$(date +%Y%m%d%H%M%S).tar
# 备份容器
docker ps -aq | xargs -I {} docker export -o /backup/container-{}.tar {}
# 备份卷
docker volume ls | awk '{print $1}' | xargs -I {} sh -c 'docker run --rm -v {}:/$$_volume alpine tar czvf /backup/{}_backup.tar /$$_volume'
echo "Backup completed!"
赋予执行权限后运行:chmod +x backup.sh && ./backup.sh
sudo systemctl stop docker。docker load、docker import等命令测试恢复。