当前位置: 首页 > news >正文

[特殊字符]pull-aliyun:一键拉取阿里云私有镜像并简化命名

pull-aliyun:一键拉取阿里云私有镜像并简化命名

  • ❗ 问题描述
  • 🐳 `pull-aliyun`:一键拉取阿里云私有镜像并简化命名
    • 🎯 功能说明
    • 📦 安装步骤
      • 1️⃣ 创建系统命令脚本
      • 2️⃣ 赋予执行权限
    • ▶️ 使用示例
    • ⚠️ 前提条件
    • 🔒 安全与健壮性
    • 🧩 可扩展建议

❗ 问题描述

从阿里云私有仓库拉取的镜像名称通常格式如下:

registry.cn-hangzhou.aliyuncs.com/your-namespace/your-image:tag

名称冗长,命令行操作、脚本编写、docker-compose.yml 配置都非常不方便!


🐳 pull-aliyun:一键拉取阿里云私有镜像并简化命名

适用于 CentOS / Ubuntu / Debian / Rocky / AlmaLinux 等主流 Linux 系统
无需依赖特定包管理器,仅需 Bash + Docker

🎯 功能说明

● 从阿里云容器镜像服务(ACR)私有仓库拉取镜像
● 自动提取镜像名(如 mysql:8.0)
● 重命名为统一格式:aliyun_<镜像名>:<标签>
自动删除原始长名字,保持 docker images 列表整洁
● 安装为全局系统命令 pull-aliyun,可在任意目录使用
示例:

pull-aliyun crpi-xxxx.cn-beijing.personal.cr.aliyuncs.com/ns/app:1.0
# -> 本地镜像名为 aliyun_app:1.0

📦 安装步骤

1️⃣ 创建系统命令脚本

以 root 或具有 sudo 权限的用户执行:

sudo tee /usr/local/bin/pull-aliyun > /dev/null << 'EOF'
#!/bin/bash# pull-aliyun: 拉取阿里云私有镜像并重命名为 aliyun_<name>:<tag>,自动清理原始长名字
# 支持所有标准 Linux 发行版(CentOS, Ubuntu, Debian, Rocky, etc.)
# 要求:已安装 Docker 并登录阿里云仓库(如需认证)set -eif [ $# -ne 1 ]; thenecho "❌ 用法: pull-aliyun <完整阿里云镜像地址>"echo "示例: pull-aliyun crpi-xxxx.region.personal.cr.aliyuncs.com/namespace/app:tag"echo "结果: 本地镜像名为 aliyun_app:tag,并自动删除原始长名字"exit 1
fiFULL_IMAGE="$1"# 提取最后一段(如 a/b/c:mysql → c:mysql)
BASE_NAME=$(echo "$FULL_IMAGE" | sed 's|.*/||')# 若未指定 tag,默认使用 :latest
if [[ "$BASE_NAME" != *":"* ]]; thenBASE_NAME="${BASE_NAME}:latest"
fi# 分离镜像名与标签
IMAGE_NAME="${BASE_NAME%:*}"
TAG="${BASE_NAME##*:}"# 构造新名字
SHORT_NAME="aliyun_${IMAGE_NAME}:${TAG}"echo "📥 正在拉取: $FULL_IMAGE"
docker pull "$FULL_IMAGE"echo "🏷️  创建本地别名: $SHORT_NAME"
docker tag "$FULL_IMAGE" "$SHORT_NAME"echo "🧹 删除原始长名字: $FULL_IMAGE"
docker rmi "$FULL_IMAGE" >/dev/null 2>&1 || trueecho "✅ 成功!现在可使用: docker run $SHORT_NAME"
EOF

2️⃣ 赋予执行权限

sudo chmod +x /usr/local/bin/pull-aliyun

✅ /usr/local/bin 是 POSIX 标准路径,所有主流 Linux 默认包含在 $PATH 中,无需额外配置。

▶️ 使用示例

# 拉取 MySQL
pull-aliyun crpi-kgdy0vxieoksykgh.cn-beijing.personal.cr.aliyuncs.com/aliyun_docker_ws/mysql:8.0# 拉取 Redis
pull-aliyun crpi-kgdy0vxieoksykgh.cn-beijing.personal.cr.aliyuncs.com/aliyun_docker_ws/redis:7.0# 不带 tag(自动补 :latest)
pull-aliyun crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com/myproj/nginx

输出:

✅ 成功!现在可使用: docker run aliyun_mysql:8.0

验证:

docker images | grep aliyun_

⚠️ 前提条件

● 已安装 Docker Engine(官方安装指南)
● 如私有仓库需要认证,请先登录:

docker login crpi-xxxx.region.personal.cr.aliyuncs.com

(通常使用阿里云访问凭证或临时 Token)


🔒 安全与健壮性

● 使用 set -e:任一命令失败则立即退出
docker rmi 后加 || true:即使删除失败(如被容器占用)也不中断流程
● 不重复下载:docker tag 仅为引用,不复制数据
● 兼容无 tag 输入(自动补 :latest)


🧩 可扩展建议

● 自定义前缀:将脚本中 “aliyun_${IMAGE_NAME}” 改为变量(如 ${PREFIX:-aliyun}_…)
● 支持多仓库:稍作修改即可适配 Harbor、AWS ECR 等
● 集成 CI/CD:可直接在 Jenkins/GitLab CI 中调用此命令


📝 许可证
本脚本为通用工具,可自由用于个人或企业环境,无需授权。

✨ 一句话总结:从此告别冗长镜像名,一行命令搞定拉取 + 重命名 + 清理!

作者:不会写程序的未来程序员
首发于 CSDN
版权声明:本文为原创文章,转载请注明出处。

http://www.dtcms.com/a/614665.html

相关文章:

  • 1.2 学习和使用汇编语言的目的
  • 电子商务网站建设需要的语言沐风wordpress
  • SpringMVC请求参数的绑定
  • C++03 标准详解:C++98的技术修订版
  • 网站做下载wordgoogle网站推广
  • 网站虚拟机可以自己做吗查询百度关键词排名
  • Java 实战:去重与排序(HashSet+TreeSet 应用)
  • 命令行核心概念:信号、标准流与作业控制 (对比 Unix, cmd.exe, PowerShell)
  • wordpress仿站难吗央视优购物官方网站
  • 网站设计设计目的漳州做网站含博大选
  • 阿里云网站301重定向怎么做买证书网站开发工程师
  • 北京网站搜索引擎优化江苏宿迁房产网
  • 丽水市莲都区建设局网站计算机网络服务
  • WordPress做的网站源代码共享ip服务器做网站
  • 中国建设企业银行官网站深州做网站公司
  • 桐乡建设局网站高校网站建设方案
  • 青岛三吉互联网站建设公司945新开传奇网站
  • 【Chrono库】Chrono 时间舍入模块解析(round.rs)
  • 网站建设微信文章企业建网站费用
  • 二十二、注意力机制与序列模型
  • 花垣做网站怎么上传软件到网站
  • Spring Boot+Vue项目从零入手
  • 【BuildFlow 筑流】MonthDuration 类型深度解析及源码
  • 中铁中基建设集团网站同一服务器建两个wordpress
  • C语言编译软件的获取与选择方法 | 如何挑选适合的C语言编译工具
  • 电子商务网站建设设计报告网推app下载
  • 华为云建网站网站建设情况 报告
  • 做地方分类信息网站需要什么资质吗大沥南庄网站建设
  • 企业网站备案信息查询备案时注意网站名称规范
  • 如何做vip微信电影网站抖音珠宝代运营