52 lines
1.5 KiB
Bash
52 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
set -euo pipefail
|
||
|
||
# ============================================================
|
||
# 配置区:修改以下变量
|
||
# ============================================================
|
||
REGISTRY="chongqingshcis-a189ec98.ecis.chongqing-1.cmecloud.cn" # 登录地址 / 目标仓库域名
|
||
NAMESPACE="cmii" # 目标命名空间
|
||
USERNAME="cqcmii" # 仓库登录用户名
|
||
PASSWORD='pL8$kq9@m' # 仓库登录密码
|
||
INPUT_FILE="uas23-260423.txt" # 镜像列表文件路径
|
||
# ============================================================
|
||
|
||
# 登录到私有仓库
|
||
echo ">>> Logging in to $REGISTRY..."
|
||
echo "$PASSWORD" | docker login "$REGISTRY" -u "$USERNAME" --password-stdin
|
||
|
||
# 逐行处理镜像
|
||
while IFS= read -r line || [ -n "$line" ]; do
|
||
# 跳过空行和注释行
|
||
[[ -z "$line" || "$line" == \#* ]] && continue
|
||
|
||
# 拆分 repo 和 tag
|
||
if [[ "$line" =~ (.*):(.*) ]]; then
|
||
repo="${BASH_REMATCH[1]}"
|
||
tag="${BASH_REMATCH[2]}"
|
||
else
|
||
repo="$line"
|
||
tag="latest"
|
||
fi
|
||
|
||
# 只保留镜像名最后一段(去掉原有 namespace/domain)
|
||
image_name="${repo##*/}"
|
||
|
||
src_image="${repo}:${tag}"
|
||
dest_image="${REGISTRY}/${NAMESPACE}/${image_name}:${tag}"
|
||
|
||
echo ""
|
||
echo ">>> [pull ] $src_image"
|
||
docker pull "$src_image"
|
||
|
||
echo ">>> [tag ] $src_image → $dest_image"
|
||
docker tag "$src_image" "$dest_image"
|
||
|
||
echo ">>> [push ] $dest_image"
|
||
docker push "$dest_image"
|
||
|
||
done < "$INPUT_FILE"
|
||
|
||
echo ""
|
||
echo ">>> All done." |