数据库做图书管理系统网站,晋江规划建设局网站,先看网站案例您的网站也可以这么做,古镇营销型网站建设#x1f433; Docker Hub 镜像一键同步至阿里云 ACR
本脚本用于 从 Docker Hub 拉取镜像并推送到阿里云容器镜像服务#xff08;ACR#xff09;。
它通过 Python 的 docker SDK 封装了完整流程#xff1a;拉取 → 重命名 → 登录 → 推送#xff0c;并在控制台实时输出进度…Docker Hub 镜像一键同步至阿里云 ACR
本脚本用于 从 Docker Hub 拉取镜像并推送到阿里云容器镜像服务ACR。
它通过 Python 的 docker SDK 封装了完整流程拉取 → 重命名 → 登录 → 推送并在控制台实时输出进度日志方便运维和开发人员快速完成镜像同步。
✨ 功能特点
支持从 Docker Hub 拉取任意镜像如 nginx:latest自动重命名为 阿里云 ACR 标准镜像格式支持 公网地址 和 内网 VPC 地址 两种形式全过程输出拉取、推送进度方便排错命令行参数友好可灵活调用使用方法确保本地安装了 Docker 并已启动安装依赖
pip install docker执行脚本例如拉取 nginx:latest
python ack-reg-sync.py nginx:latest⚙️ 配置说明
在脚本中可修改以下固定参数
acr_registry阿里云 ACR 地址如 registry.cn-shenzhen.aliyuncs.comacr_namespace命名空间仓库名acr_username阿里云账号或 RAM 用户acr_password对应密码或临时令牌
import docker
import argparse # 新增导入def pull_from_dockerhub_and_push_to_acr(dockerhub_image: str,acr_registry: str,acr_namespace: str,acr_username: str,acr_password: str
):从 Docker Hub 拉取镜像显示进度推送到阿里云 ACR:param dockerhub_image: Docker Hub 镜像名称如 nginx:latest:param acr_registry: 阿里云 ACR 注册表地址如 registry.cn-hangzhou.aliyuncs.com:param acr_namespace: ACR 命名空间仓库名称:param acr_username: 阿里云账号或 RAM 用户名:param acr_password: 阿里云密码或临时令牌# 初始化 Docker 客户端client docker.from_env()# 1. 从 Docker Hub 拉取镜像显示进度print(f从 Docker Hub 拉取镜像: {dockerhub_image})pull_logs client.api.pull(dockerhub_image,streamTrue, # 启用流式输出decodeTrue # 解析日志为字典)# 实时显示拉取进度for log in pull_logs:if progress in log:print(f层 {log[id]}: {log[status]} f{log[progress] if progress in log else })else:print(f{log[status]} {log.get(id, )}.strip())# 2. 重命名为阿里云 ACR 格式image_with_tag dockerhub_image.split(/)[-1]target_image f{acr_registry}/{acr_namespace}/{image_with_tag}alias_image fregistry-vpc.cn-shenzhen.aliyuncs.com/{acr_namespace}/{image_with_tag}print(f\n重命名镜像为: {target_image})image client.images.get(dockerhub_image)image.tag(target_image)# 3. 登录阿里云 ACRprint(登录阿里云 ACR...)client.login(usernameacr_username,passwordacr_password,registryacr_registry)# 4. 推送镜像到阿里云 ACRprint(f推送镜像到阿里云 ACR: {target_image})push_logs client.images.push(target_image,streamTrue,decodeTrue)# 显示推送进度可选for log in push_logs:if error in log:raise Exception(f推送失败: {log[error]})print(log.get(status, ), log.get(progress, ))print(f\n阿里云公网地址为: {target_image})print(f\n阿里云内网地址为: {alias_image})print(\n操作完成)if __name__ __main__:# 配置参数解析器parser argparse.ArgumentParser(description从Docker Hub拉取镜像并推送到阿里云ACR)parser.add_argument(dockerhub_image, typestr, helpDocker Hub镜像名称如 nginx:latest)# 其他固定参数args parser.parse_args()# 固定配置的其他参数acr_registry registry.cn-shenzhen.aliyuncs.com # 阿里云 ACR 地址acr_namespace xxxxx # ACR 命名空间仓库名acr_username xxxxxxxxxx # 阿里云账号acr_password xxxxxxxxxx # 密码或临时令牌# 执行操作pull_from_dockerhub_and_push_to_acr(args.dockerhub_image, # 使用命令行参数acr_registry,acr_namespace,acr_username,acr_password)