liunx推送docker镜像仓库sh脚本

liunx推送docker镜像仓库脚本(保存下边内容存储为sh文件)

保存脚本到sh文件,并添加执行权限

chmod +x liunx_push.sh

例如:

touch liunx_push.sh
vi liunx_push.sh
chmod +x liunx_push.sh
./liunx_puish.sh

用户名密码、镜像仓库地址和路径请自行修改

仓库名称和标签用空格分隔

执行流程

1、本地如果不存在镜像则会从官方仓库拉取(保证自己的网络可以正常访问)
2、自动打标签并推送
3、推送成功后删除tag镜像

#!/bin/bash

# 设置代码页为 UTF-8
export LANG=en_US.UTF-8

# 设置 Docker 仓库用户名和密码
DOCKER_USERNAME="admin"
DOCKER_PASSWORD="harbor123"

# 设置 Docker 仓库地址和路径
DOCKER_REPO="192.168.21.234:81"
TARGET_PATH="tools"

# 定义镜像名称和标签用空格分隔
IMAGES=("node:20.6.1" "node:16.17.1")

# 登录到 Docker 仓库
echo "正在登录到 Docker 仓库..."
echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin "$DOCKER_REPO"

# 验证登录
if ! docker info > /dev/null 2>&1; then
    echo "Docker 登录失败,请检查用户名和密码。"
    exit 1
fi

# 构建和推送每个镜像
for IMAGE in "${IMAGES[@]}"; do
    # 提取镜像名称和标签
    IMAGE_NAME=$(echo "$IMAGE" | cut -d':' -f1)
    IMAGE_TAG=$(echo "$IMAGE" | cut -d':' -f2)

    # 标记 Docker 镜像
    TARGET_IMAGE="$DOCKER_REPO/$TARGET_PATH/$IMAGE_NAME:$IMAGE_TAG"

    # 检查本地是否存在镜像,如果不存在则拉取镜像
    if ! docker image inspect "$IMAGE" > /dev/null 2>&1; then
        echo "本地不存在镜像 $IMAGE,正在拉取..."
        docker pull "$IMAGE"
    fi

    docker tag "$IMAGE" "$TARGET_IMAGE"
    echo "推送镜像:$TARGET_IMAGE"
    docker push "$TARGET_IMAGE"
    # 删除本地的标签
    docker rmi "$TARGET_IMAGE"
done

echo "推送完成!"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值