阿里云镜像仓库授权问题

本文详细介绍了如何在阿里云上为子账号分配镜像仓库的管理权限,包括创建子账号、授权访问特定命名空间和镜像仓库的过程,以及如何使用子账号进行镜像的拉取和推送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用公有云镜像仓库的时候,我们总有一种需要,即把命名空间或者仓库分配给不同的子账号,让子账号能够管理。那么在阿里云上是如何做到的呢?本文就先实践一下。

一、首先通过ram控制台创建一个子账号

image

二、创建好子账号以后我们用子账号登录控制台

image
第一次会要求我们创建仓库密码,这个密码就是我们登录仓库拉取镜像的凭证
image
但是我们会发现用子账号登录之后完全看不到我们的主账号的命名空间,那么要怎么做才能看到呢?

三、首先我们说说镜像服务的构成

1.代码源
image
在这里主要是绑定代码仓库,代码仓库对镜像仓库授权之后,镜像仓库能拉取到代码,这里的代码主要是dockerfile
用于构建镜像
2.命名空间
image
这里我们理解成项目,比如我可以创建product pre-product dev 作为线上、预发布、开发环境的命名空间
命名空间没有地域区分
3.镜像仓库
image
镜像仓库就是存放我们镜像的地方了,比如我们可以在product线上环境的命名空间下创建
nginx apache tomcat php nodejs java 等镜像用于构建服务,如果有版本的区别,比如我线上的nodejs镜像有需要node8和node6,怎么办呢? 这个时候我们可以通过tag来加以区别,通过修改dockerfile,保存两个版本的nodejs的镜像在仓库里面,在k8s部署时候根据tag取不同版本的基础环境作为无状态服务。
注意:仓库是有地域区分的,在香港创建的仓库在北京是地域下是看不到的哈,如果有人说仓库被阿里云删了,请一定要看看自己是不是选错地域了???

四、授权

1.假如我要子账号登录 Registry后 pull所有该命名空间下的镜像,可以通过OpenAPI 查看到该命名空间的信息及该命名空间下所有镜像仓库的相关信息

{
  "Statement": [
    {
      "Action": [
        "cr:Get*",
        "cr:List*",
        "cr:PullRepository"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:*:*:repository/alitest1/*"
      ]
    }
  ],
  "Version": "1"
}

权限分配
image

2.但是这个时候还是看不到的哈,如果我们想看到命名空间,要加对alitest1命名空间加以下规则才能看到

{
  "Statement": [
    {
      "Action": [
        "cr:Get*",
        "cr:List*",
        "cr:PullRepository"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:*:*:repository/alitest1/*"  #这个表示对alitest1命名空间给权限,如果要具体到某个仓库 * 换成仓库名
      ]
    },
    {
      "Action": [
        "cr:ListNamespace",
        "cr:ListRepository"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ],
  "Version": "1"
}

授权之后我能看到所有命名空间,但是只能对被授权的命名空间进行管理
子账号登录控制台后就能和主站号一样看到所有的命名空间了
image

但是请注意 我们只能对alitest1进行操作 因为只有alitest1的授权

五、使用子账号进行pull和push

1.下面进行测试,先推送到镜像仓库
请参考此文档:
https://help.aliyun.com/document_detail/67992.html?spm=5176.8351553.0.0.4b2519911tzA7e
鉴权action:
cr:PushRepository
我现在要把一个busybox推送到阿里云镜像仓库下去
鉴权对象:
命名空间:alitest1
镜像仓库:test
完整鉴权规则:

{
  "Statement": [
    {
      "Action": [
        "cr:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:cn-hongkong:*:repository/alitest1/test"
      ]
    },
    {
      "Action": [
        "cr:Get*",
        "cr:List*",
        "cr:PushRepository"  
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:*:*:repository/alitest1"
      ]
    }
  ],
  "Version": "1"
}

image

推送测试:
先在节点上登录仓库,很多人access denied的原因就是没登录成功
image

image
完整过程:
image
如果大家不晓得怎么推送,控制台已经给出了命令
image

最后一步,控制台验证:
image

### 使用阿里云镜像仓库对Docker的影响及优缺点 使用阿里云镜像仓库可以显著提升 Docker 的使用体验,特别是在国内网络环境下。以下是具体的影响及其优缺点分析: #### 一、影响 1. **镜像拉取速度** 阿里云镜像仓库提供加速服务,能够有效减少因国际网络延迟导致的镜像下载缓慢问题[^3]。对于需要频繁拉取官方或第三方镜像的用户来说,这将极大提升开发效率。 2. **镜像存储与管理** 阿里云镜像仓库支持私有和公有镜像的存储,用户可以根据需求选择是否公开自己的镜像[^4]。此外,它还提供了版本控制功能,便于团队协作时对不同版本镜像进行管理和分发。 3. **安全性增强** 通过设置访问凭证(如固定密码)以及权限控制策略,可以保护镜像资源不被未经授权的用户访问[^2]。这对于企业级应用尤为重要。 4. **集成生态** 阿里云镜像仓库阿里云其他服务(如 ECS、ACK 等)深度集成,方便用户在云端快速部署容器化应用。同时支持 Serverless 场景下的自动化部署[^2]。 #### 二、优点 1. **高效性** 利用阿里云提供的镜像加速服务,大幅缩短了镜像下载时间,尤其适合大规模集群环境下的节点初始化操作[^3]。 2. **灵活性** 用户不仅可以上传自定义镜像,还能直接从公共仓库中获取常用镜像,并结合阿里云特有的区域特性优化传输路径[^1]。 3. **可靠性** 阿里云采用多副本存储机制保障数据安全,即使某个数据中心发生故障也能确保服务可用性[^4]。 4. **成本节约** 相较于自行搭建私有仓库,使用阿里云镜像仓库减少了硬件采购和运维投入,降低了总体拥有成本(TCO)[^2]。 #### 三、缺点 1. **依赖外部服务** 如果业务完全依赖于阿里云镜像仓库,则可能面临供应商锁定风险。一旦更换服务商,迁移工作量较大[^1]。 2. **网络稳定性要求高** 尽管阿里云在国内有较好的网络覆盖,但仍然可能存在某些偏远地区或特定时间段内访问不稳定的情况[^3]。 3. **学习曲线** 对于初次接触阿里云平台的开发者而言,理解其镜像仓库相关概念(如命名空间、实例等)以及配置流程可能会有一定难度[^4]。 ```python # 示例:登录阿里云镜像仓库并推送镜像 import subprocess def push_image_to_aliyun(username, password, image_name, repository): login_command = f"docker login --username={username} {repository}" tag_command = f"docker tag {image_name} {repository}/{image_name}" push_command = f"docker push {repository}/{image_name}" try: subprocess.run(login_command, shell=True, check=True) subprocess.run(tag_command, shell=True, check=True) subprocess.run(push_command, shell=True, check=True) print("镜像推送成功") except Exception as e: print(f"镜像推送失败: {e}") # 调用示例 push_image_to_aliyun("justin@1703206802674361", "your_password", "my_app:v1", "registry.cn-shanghai.aliyuncs.com/my_namespace") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值