定期备份所有 Docker 镜像
Linux 脚本
创建一个名为 backup_all_docker_images.sh
的脚本文件,内容如下:
#!/bin/bash
# 定义变量
BACKUP_DIR="/backup/docker"
TIMESTAMP=$(date +"%Y%m%d%H%M")
BACKUP_FILE="${BACKUP_DIR}/docker_images_backup_${TIMESTAMP}.tar"
# 创建备份目录(如果不存在)
mkdir -p ${BACKUP_DIR}
# 导出所有镜像
docker save $(docker images -q) -o ${BACKUP_FILE}
# 输出备份信息
echo "Backup of all Docker images completed: ${BACKUP_FILE}"
将这个脚本保存为 backup_all_docker_images.sh
并赋予可执行权限:
chmod +x backup_all_docker_images.sh
然后设置 cron
任务:
crontab -e
添加一行来每天凌晨 2 点运行备份脚本:
0 2 * * * /path/to/backup_all_docker_images.sh
Windows 脚本
创建一个名为 backup_all_docker_images.ps1
的 PowerShell 脚本文件,内容如下:
# 定义变量
$backupDir = "C:\Backup\Docker"
$timestamp = Get-Date -Format "yyyyMMddHHmm"
$backupFile = "$backupDir\docker_images_backup_$timestamp.tar"
# 创建备份目录(如果不存在)
if (-Not (Test-Path -Path $backupDir)) {
New-Item -ItemType Directory -Path $backupDir
}
# 获取所有镜像ID
$images = docker images -q
# 导出所有镜像
docker save -o $backupFile $images
# 输出备份信息
Write-Output "Backup of all Docker images completed: $backupFile"
然后设置任务计划程序来定期运行这个脚本:
- 打开“任务计划程序”(Task Scheduler)。
- 创建一个基本任务:
- 名称:BackupAllDockerImages
- 触发器:每天
- 开始时间:选择一个适合的时间(例如凌晨2点)
- 操作:启动程序
- 程序/脚本:
powershell.exe
- 添加参数(可选):
-File "C:\Path\To\backup_all_docker_images.ps1"
- 程序/脚本:
总结
通过上述步骤,你可以在 Linux 和 Windows 上定期备份所有 Docker 镜像到指定的文件夹,并在 Docker 出现故障后重新安装并恢复这些镜像。这种方法确保了你的所有 Docker 镜像始终有备份可以恢复,从而保证业务的连续性。