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"
"""
浙公网安备 33010602011771号