Docker 开源软件应急处理方案及操作手册——备份与灾难恢复策略
1 、容器与镜像备份
|
# 创建容器备份脚本 cat > /usr/local/bin/docker_backup.sh << 'EOF' #!/bin/bash BACKUP_DIR=/backup/docker TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR/$TIMESTAMP # 备份容器配置 docker ps --format '{{.Names}}' | while read -r name; do docker inspect $name > $BACKUP_DIR/$TIMESTAMP/${name}_inspect.json done # 备份镜像 docker images --format '{{.Repository}}:{{.Tag}}' | grep -v "<none>" | while read -r img; do docker save -o $BACKUP_DIR/$TIMESTAMP/$(echo $img | tr '/' '_' | tr ':' '_').tar $img done # 保留最近30天备份 find $BACKUP_DIR -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \; EOF chmod +x /usr/local/bin/docker_backup.sh # 添加到定时任务 echo "0 2 * * * /usr/local/bin/docker_backup.sh" >> /etc/crontab |
2、数据卷备份与恢复
|
# 备份数据卷 docker run --rm -v <卷名>:/source -v /backup:/dest alpine tar -czf /dest/<卷名>_$(date +%Y%m%d).tar.gz -C /source . # 恢复数据卷 docker volume create <新卷名> docker run --rm -v <新卷名>:/dest -v /backup:/source alpine sh -c "tar -xzf /source/<卷名>_<日期>.tar.gz -C /dest" # 验证恢复的数据 docker run --rm -v <新卷名>:/data alpine ls -l /data |
3、Docker 系统迁移
|
# 在源主机:导出Docker系统信息 docker system save -o /backup/docker_system.tar $(docker images --format '{{.Repository}}:{{.Tag}}' | grep -v "<none>") # 复制备份到目标主机 scp /backup/docker_system.tar user@target-host:/backup/ # 在目标主机:加载备份 docker system load -i /backup/docker_system.tar # 迁移数据卷 rsync -avz /var/lib/docker/volumes/ user@target-host:/var/lib/docker/volumes/ # 启动容器(使用原配置) docker-compose up -d # 若使用Compose # 或手动启动容器(根据备份的inspect信息) |
更多推荐
所有评论(0)