modify scripts
This commit is contained in:
43
tools/docker_backup.sh
Executable file
43
tools/docker_backup.sh
Executable file
@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# =====================
|
||||
# 参数检查
|
||||
if [[ $# -lt 2 ]]; then
|
||||
echo "用法: $0 <容器名> <镜像名> [保留备份个数]"
|
||||
echo "示例: $0 dev-env dev-env 3"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONTAINER_NAME="$1"
|
||||
IMAGE_NAME="$2"
|
||||
KEEP_BACKUPS="${3:-3}" # 默认保留 3 个
|
||||
# =====================
|
||||
|
||||
TAG_LATEST="${IMAGE_NAME}:latest"
|
||||
BACKUP_TAG="${IMAGE_NAME}:backup-$(date +%Y%m%d-%H%M%S)"
|
||||
|
||||
echo "📦 正在为镜像 '${TAG_LATEST}' 生成备份..."
|
||||
docker tag "${TAG_LATEST}" "${BACKUP_TAG}"
|
||||
echo "✅ 备份完成: ${BACKUP_TAG}"
|
||||
|
||||
echo "📝 提交容器 '${CONTAINER_NAME}' 到镜像 '${TAG_LATEST}'..."
|
||||
docker commit "${CONTAINER_NAME}" "${TAG_LATEST}"
|
||||
echo "✅ 提交完成: ${TAG_LATEST}"
|
||||
|
||||
echo "🧹 清理多余的备份,只保留最近 ${KEEP_BACKUPS} 个..."
|
||||
# 找出多余的备份镜像
|
||||
BACKUPS=$(docker images --format "{{.Repository}}:{{.Tag}} {{.CreatedAt}}" | grep "${IMAGE_NAME}:backup-" | sort -r -k2 | awk '{print $1}')
|
||||
|
||||
COUNT=0
|
||||
for b in ${BACKUPS}; do
|
||||
COUNT=$((COUNT+1))
|
||||
if [ $COUNT -gt ${KEEP_BACKUPS} ]; then
|
||||
echo "🗑️ 删除旧备份: ${b}"
|
||||
docker rmi "${b}"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "🎉 完成!"
|
||||
docker images | grep "${IMAGE_NAME}"
|
||||
Reference in New Issue
Block a user