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