docker container backup

"""

!/bin/bash

=== 配置参数 ===

CONTAINER="kibana" # 容器名称
IMAGE="xiaoxiannv/kibana" # 镜像名称
PORT=5601 # 容器端口
REPO="ppp.aaa.com/pscale-docker-repo" # 远程仓库地址

自动生成 tag(格式:v1.0.1-YYYYMMDD)

DATE=\((date +%Y%m%d) TAG="v1.0.1-\){DATE}"

=== 1. 保存当前容器为新镜像 ===

echo "📦 Commit current container '$CONTAINER' -> \({IMAGE}:\){TAG}"
docker commit -a "xiaoxiannv" -m "auto backup \({DATE}" "\)CONTAINER" "\({IMAGE}:\){TAG}"

=== 2. 删除旧容器(如果存在) ===

echo "🛑 Stopping and removing old container '\(CONTAINER'" docker stop "\)CONTAINER" 2>/dev/null
docker rm "$CONTAINER" 2>/dev/null

=== 3. 启动新容器,并设置为 always 重启 ===

echo "🚀 Starting new container '$CONTAINER' from image \({IMAGE}:\){TAG}"
docker run -d
--restart=always
--name "$CONTAINER"
-p \({PORT}:\){PORT}
"\({IMAGE}:\){TAG}"

=== 4. 推送镜像到远程仓库 ===

echo "🌐 Pushing new image \({IMAGE}:\){TAG} to remote repository"
docker tag "\({IMAGE}:\){TAG}" "\({REPO}/\){IMAGE}:\({TAG}" docker push "\){REPO}/\({IMAGE}:\){TAG}"

=== 5. 备份镜像并保存为 tar 文件 ===

echo "📦 Saving new image \({IMAGE}:\){TAG} to tar file"
docker save -o "\({IMAGE}-\){TAG}.tar" "\({IMAGE}:\){TAG}"

=== 6. 输出完成信息 ===

echo "✅ Done. New container '$CONTAINER' is running on port $PORT with image tag $TAG"
"""

=== 自动化定时备份(每周一次) ===

如果想每周自动备份,可以设置 crontab 来执行此脚本

如:每周一早上 6 点运行此脚本:

0 6 * * 1 /path/to/kibana_commit_rotate.sh >> /var/log/kibana_commit.log 2>&1

=== 步骤 2: 给脚本添加执行权限 ===

运行以下命令来给脚本添加执行权限

chmod +x kibana_commit_rotate.sh

=== 步骤 3: 手动执行脚本 ===

可以通过运行下面的命令来手动执行脚本:

./kibana_commit_rotate.sh

=== 步骤 4: 设置定时任务 ===

使用 crontab 来设置定时任务

执行 crontab -e 命令后添加以下行,每周一 6 点自动运行脚本

0 6 * * 1 /path/to/kibana_commit_rotate.sh >> /var/log/kibana_commit.log 2>&1

=== 步骤 5: 查看日志 ===

你可以查看执行日志来确认脚本是否运行成功:

cat /var/log/kibana_commit.log

posted @ 2025-05-11 15:57  vivi~  阅读(23)  评论(0)    收藏  举报