windows推送docker镜像仓库脚本(保存下边内容存储为bat文件)
用户名密码、镜像仓库地址和路径请自行修改
仓库名称和标签用空格分隔
执行流程
1、本地如果不存在镜像则会从官方仓库拉取(保证自己的网络可以正常访问)
2、自动打标签并推送
3、推送成功后删除tag镜像
@echo off
setlocal
REM 设置代码页为 UTF-8
chcp 65001
REM 设置 Docker 仓库用户名和密码
set DOCKER_USERNAME=admin
set DOCKER_PASSWORD=harbor123
REM 设置 Docker 仓库地址和目标路径
set DOCKER_REPO=192.168.21.234:81
set TARGET_PATH=tools
REM 定义镜像名称和标签用空格分隔
set IMAGES=node:20.6.1 node:16.17.1
REM 登录到 Docker 仓库
echo 正在登录到 Docker 仓库...
docker login --username=%DOCKER_USERNAME% --password %DOCKER_PASSWORD% %DOCKER_REPO%
REM 验证登录
docker info >nul 2>&1
if errorlevel 1 (
echo Docker 登录失败,请检查用户名和密码。
pause
exit /b 1
)
REM 构建和推送每个镜像
for %%I in (%IMAGES%) do (
REM 提取镜像名称和标签
for /f "tokens=1,2 delims=:" %%A in ("%%I") do (
set "IMAGE_NAME=%%A"
set "IMAGE_TAG=%%B"
REM 检查本地是否存在镜像,如果不存在则拉取镜像
docker image inspect %%I >nul 2>&1
if errorlevel 1 (
echo 本地不存在镜像 %%I,正在拉取...
docker pull %%I
)
REM 标记 Docker 镜像
call docker tag %%I %DOCKER_REPO%/%TARGET_PATH%/%%A:%%B
echo 推送镜像:%DOCKER_REPO%/%TARGET_PATH%/%%A:%%B
REM 推送 Docker 镜像
call docker push %DOCKER_REPO%/%TARGET_PATH%/%%A:%%B
REM 删除本地的标签
call docker rmi %DOCKER_REPO%/%TARGET_PATH%/%%A:%%B
)
)
echo 推送完成!
pause
endlocal
@echo on