Docker Hub 镜像一键同步至阿里云 ACR


🐳 Docker Hub 镜像一键同步至阿里云 ACR

本脚本用于 从 Docker Hub 拉取镜像并推送到阿里云容器镜像服务(ACR)
它通过 Python 的 docker SDK 封装了完整流程:拉取 → 重命名 → 登录 → 推送,并在控制台实时输出进度日志,方便运维和开发人员快速完成镜像同步。

✨ 功能特点

  • 支持从 Docker Hub 拉取任意镜像(如 nginx:latest
  • 自动重命名为 阿里云 ACR 标准镜像格式
  • 支持 公网地址内网 VPC 地址 两种形式
  • 全过程输出拉取、推送进度,方便排错
  • 命令行参数友好,可灵活调用

🚀 使用方法

  1. 确保本地安装了 Docker 并已启动

  2. 安装依赖:

    pip install docker
    
  3. 执行脚本(例如拉取 nginx:latest):

    python ack-reg-sync.py nginx:latest
    

⚙️ 配置说明

在脚本中可修改以下固定参数:

  • acr_registry:阿里云 ACR 地址(如 registry.cn-shenzhen.aliyuncs.com
  • acr_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,stream=True,  # 启用流式输出decode=True   # 解析日志为字典)# 实时显示拉取进度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 = f"registry-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(username=acr_username,password=acr_password,registry=acr_registry)# 4. 推送镜像到阿里云 ACRprint(f"推送镜像到阿里云 ACR: {target_image}")push_logs = client.images.push(target_image,stream=True,decode=True)# 显示推送进度(可选)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', type=str, help='Docker 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)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920176.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考-系统架构设计师 计算机系统基础知识详细讲解

个人博客:blogs.wurp.top 一、计算机系统组成与多级层次结构 1. 冯诺依曼体系结构 (核心考点) 这是所有现代计算机的理论基础。核心思想是 “存储程序” 。 五大部件:运算器、控制器、存储器、输入设备、输出设备。工作流程:指令驱动。CP…

DLL文件丢失怎么办?这个修复工具一键搞定!

软件介绍(文末获取)是不是经常遇到这种情况:安装软件时提示缺少DLL文件?打开游戏时出现DLL错误?或者运行程序时突然崩溃?今天给大家推荐一款超好用的DLL修复工具——4DDiG DLL Fixer,一键解决所…

并发容器小结及ConcurrentSkipListMap介绍——并发系列(十一)

目录 概述 ConcurrentHashMap CopyOnWriteArrayList ConcurrentLinkedQueue BlockingQueue ConcurrentSkipListMap 设计目的 功能特性 与其他相关类对比 适用场景 概述 JDK提供的这些容器大部分在 java.util.concurrent 包中。我们这里挑选出了一些比较有代表性的并发…

蓝思科技半年净利超11亿,蓝思成绩单怎么分析?

8月26日,蓝思科技发布2025年半年度业绩报告,其中,净利润11.43亿元,同比增长32.68%。这份成绩单我们该怎么分析:首先,蓝思科技营收与利润双增长,成长能力持续凸显。报告期内,公司营业…

【GM3568JHF】FPGA+ARM异构开发板 应用编辑及源码下载

早期因为处理器芯片性能不够,存储空间不多以及编译性能不够等因素, 早期的开发板普遍采用交叉编译的方式, 而交叉编译的方式会有几种缺点: 不能离线编译, 操作麻烦, 环境配置复杂等 GM-3568JHF的处理器性能…

华为仓颉语言的函数初步

华为仓颉语言的函数初步函数是一段完成特定任务的独立代码片段,可以通过函数名字来标识,这个名字可以被用来调用函数。要特别注意,与C/C、Python等语言不同,仓颉禁止参数重新赋值——函数参数均为不可变(immutable&…

服务初始化

目录 1.配置yum源 2. 更新系统与安装必备工具 3. 网络连接验证 4. 配置主机名 5. 同步时间 6. 配置防火墙 (两种方式) 6.1 iptables 6.2firewalld 1.配置yum源 1. 备份原有的源文件,以防万一 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.…

ICBC_TDR_UShield2_Install.exe [ICBC UKEY]

流程:1)插入U盾,记住检测到U盾类型,需要根据这个下载驱动

在线提取维基百科Wikipedia文章页面及离线批处理Wikipedia XML Dump文件

1. 在线提取维基百科Wikipedia文章 本项目提供一个增强型 Wikipedia 概念条目抓取与摘要清洗脚本:支持多级回退策略 (wikipedia 库 →wikipediaapi → 直接网页 / REST 搜索)、智能标题匹配(精确/模糊判定)、摘要质量校验、内容结构化抽取、断点续跑(结果缓存)、统…

安全合规:AC(上网行为安全)--下

五、SSL移动接入方案概述1、SSL VPN概述SSL VPN是一种远程安全接入技术,因为采用SSL协议而得名。因为Web浏览器都内嵌支持SSL协议,使得SSL VPN可以做到“无客户端”部署。SSL VPN一般采用插件系统来支持各种TCP和UDP的非Web应用,使得SSL VPN真…

【86页PPT】特种车行业SAP解决方案(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808859/91716699 资料解读:《【86页PPT】特种车行业SAP解决方案》 ​​详细资料请看本解读文章的最后内容​​ 作为特种车行业信息化建…

【Kubernetes k8s】(两万字超详细)Ubuntu-22.04搭建 k8s-1.30.1集群,开启Dashboard-2.7.0、部署ingress-nginx-1.10.1

Ubuntu-22.04搭建 k8s-1.30.1集群,开启Dashboard-v2.7.0(以及Token不生成的问题)、部署ingress-nginx-1.10.1 引言 最近在研究分布式计算,想将分布式计算都容器化,使用 k8s 来调度,所以从0开始学 k8s &…

podman启动mongdb的container因为权限问题导致changing ownership和读取storage.bson失败的解决方法

用FROM mongo:8.0.8 为基础镜像,加了些初始化数据做的mongodb镜像。用podman管理和backend,frontend组成一个简单的BS架构。利用podman创建pod,3个镜像同用一个空间,项目内部连接就可以统一用127.0.0.1加上端口进行通信了。 要使…

UE5基本打光(新手向)

在UE5中场景照明往往是构建沉浸式视觉体验的关键环节与常见挑战。学会如何打光可以为项目创建出更具表现力和艺术感的灯光效果。 1.以UE5建筑展示demo为例,首先删除旧的光照,将光照相关配置放置新的场景Light中。这样更适合多人分工。 光照子场景Light&…

PiscCode使用OpenCV和Python实现运动检测与可视化

光流分析是计算机视觉中的重要技术,用于检测视频序列中物体的运动模式。本文将介绍如何使用OpenCV和Python实现一个实时的光流分析系统,该系统能够检测运动、生成热力图并提供详细的统计分析。 技术概述 本系统基于Farneback稠密光流算法,能…

Day 36 复习日

浙大疏锦行 今天是复习日,神经网络与机器学习最大的不同就是不止固定的三行代码,需要自己定义一个模型,先继承类的属性,然后去写自己的属性,以及前向传播方法,可以手动构建:中间层的数量、每一…

ES6/ES2015 - ES16/ES2025

ES6/ES2015 - ES16/ES2025 ECMAScript(简称ES)是JavaScript的官方标准,从2015年开始每年发布一个新版本。 版本一览表年份版本主要新特性2015ES6/ES2015let/const、箭头函数、Class、模板字符串、解构赋值、模块、Promise2016ES7/ES2016指数运…

BIM 地铁站可视化:智慧运维 “透视镜”

图扑 BIM 地铁站可视化系统,以三维建模完整复刻车站空间,从出入口、站厅到设备层,管线走向、设施分布精准呈现。实时汇聚客流数据、空调等设备运行状态,动态标记设备告警、空间占用情况。通过透明化模型,运维人员可直观…

淘宝商品详情页数据接口设计与实现:从合规采集到高效解析

在电商数据分析、比价系统开发等场景中,商品详情页数据是核心基础。本文将围绕淘宝商品详情页数据接口的合规设计、高效采集与智能解析展开,提供一套可落地的技术方案,重点解决动态渲染、参数加密与数据结构化等关键问题。 一、接口设计原则…

HTML应用指南:利用GET请求获取中国银行人民币存款利率数据

人民币存款利率是影响居民储蓄行为和企业资金配置的关键因素,也是宏观经济调控的重要工具。中国银行根据中国人民银行的指导政策,结合市场情况与自身经营策略,定期调整并公布人民币存款利率标准。这些利率信息主要涵盖活期存款、定期存款&…