以下是在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 ls
docker 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
等命令測試恢復。