阿里云Kubernetes容器服务支持免密拉取私有镜像仓库

阿里云容器服务现已支持免密拉取ACR私有镜像,用户无需配置ImagePullSecrets即可轻松拉取。此功能适用于特定版本的托管Kubernetes集群及Serverless Kubernetes集群。

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

名字解释:
ACS: 阿里云容器服务,https://cs.console.aliyun.com
ACR: 阿里云容器镜像服务,https://cr.console.aliyun.com/

相信不少用户因为在使用容器服务时需要配置私有镜像的ImagePullSecrets而感到倍感繁琐,今天和大家分享的是阿里云容器服务已经支持免密拉取ACR私有镜像,用户无需在kubernetes集群中为自己的ACR私有镜像配置ImagePullSecrets,拉取ACR私有镜像从未如此简单和轻松。

如下图所示,docker pull命令失败是因为没有给私有镜像配置用户名密码,相对比的是,通过免密拉取功能,kubectl无需配置ImagePullSecrets则可直接拉取私有镜像。
image

适用要求说明

  • 仅支持免密拉取当前用户的ACR私有镜像,无法拉取其他用户的私有镜像
  • 支持跨Region拉取ACR私有镜像
  • 目前适用的集群包括:

    • 所有Serverless Kubernetes集群
    • 新创建的托管Kubernetes集群,并且版本需高于1.11.2
    • 新创建的Kubernetes集群,并且版本需高于1.11.2。对于已创建的集群,请参看下面的步骤进行手动配置。
  • 只可在default namespace下使用,暂不支持多namespace场景

手动配置已有Kuberentes集群的免密拉取功能

对于新建集群,用户无需任何配置即可使用免密拉取功能,但是对于已有Kubernetes集群,因为需要新增ram权限的授权,所以需要用户手动修改自定义授权和部署相关服务。具体过程如下。

1. 给worker节点的RAM角色添加ACR相关权限

  • 打开集群节点页面:
    image
  • 点击进入节点ECS信息页面,查看worker节点的自定义RAM角色
    image
  • 在RAM控制台找到相对应的worker的自定义ram授权策略
    image
  • 在其授权策略中添加ACR相关权限,授权容器服务可以访问ACR得到临时的token密码
    image
  • 需添加的权限如下:

    {
         "Action": [
           "cr:Get*",
           "cr:List*",
           "cr:PullRepository"
         ],
         "Resource": "*",
         "Effect": "Allow"
       }

2. 部署aliyun-acr-credential-helper服务: 用于定时刷新ACR临时token密码

apiVersion: v1
kind: ServiceAccount
metadata:
     name: aliyun-acr-credential-helper
     namespace: kube-system
 ---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
     name: aliyun-acr-credential-helper-rolebinding
     namespace: kube-system
roleRef:
     apiGroup: rbac.authorization.k8s.io
     kind: ClusterRole
     name: cluster-admin
subjects:
     - kind: ServiceAccount
       name: aliyun-acr-credential-helper
       namespace: kube-system
 ---
 #kubectl create secret docker-registry acr-image-pull-secret-public --docker-server=cr-tmp-xxx --docker-username=cr-temp-xxx --docker-password=cr-temp-xxx --docker-email=cr-temp-xxx
apiVersion: v1
data:
     .dockerconfigjson: eyJhdXRocyI6eyJjci10bXAteHh4Ijp7InVzZXJuYW1lIjoiY3ItdGVtcC14eHgiLCJwYXNzd29yZCI6ImNyLXRlbXAteHh4IiwiZW1haWwiOiJjci10ZW1wLXh4eCIsImF1dGgiOiJZM0l0ZEdWdGNDMTRlSGc2WTNJdGRHVnRjQzE0ZUhnPSJ9fX0=
kind: Secret
metadata:
     name: aliyun-acr-credential-a
     namespace: default
type: kubernetes.io/dockerconfigjson
 ---
 #kubectl create secret docker-registry acr-image-pull-secret-vpc --docker-server=cr-tmp-xxx --docker-username=cr-temp-xxx --docker-password=cr-temp-xxx --docker-email=cr-temp-xxx
apiVersion: v1
data:
     .dockerconfigjson: eyJhdXRocyI6eyJjci10bXAteHh4Ijp7InVzZXJuYW1lIjoiY3ItdGVtcC14eHgiLCJwYXNzd29yZCI6ImNyLXRlbXAteHh4IiwiZW1haWwiOiJjci10ZW1wLXh4eCIsImF1dGgiOiJZM0l0ZEdWdGNDMTRlSGc2WTNJdGRHVnRjQzE0ZUhnPSJ9fX0=
kind: Secret
metadata:
     name: aliyun-acr-credential-b
     namespace: default
type: kubernetes.io/dockerconfigjson
 ---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
     name: aliyun-acr-credential-helper
     namespace: kube-system
     labels:
       app: aliyun-acr-credential-helper
spec:
     replicas: 1
     selector:
       matchLabels:
         app: aliyun-acr-credential-helper
     template:
       metadata:
         labels:
           app: aliyun-acr-credential-helper
       spec:
         serviceAccount: aliyun-acr-credential-helper
         containers:
         - name: aliyun-acr-credential-helper
           image: registry.cn-shanghai.aliyuncs.com/acs/aliyun-acr-credential-helper:1.0-793003d
           imagePullPolicy: Always
         terminationGracePeriodSeconds: 0

开始体验

至此,自主集群的自动拉取私有镜像功能已经配置完成,那就使用kubectl命令或者登录控制台(https://cs.console.aliyun.com )快速试用吧。

阿里云容器服务将持续优化容器的云上使用体验,请保持关注。

<think>我们正在回答用户的问题:如何在Linux系统中从阿里云私有容器仓库镜像。根据引用内容,用户已经创建了阿里云私有仓库,现在需要知道如何镜像。 步骤分解: 1. 登录阿里云Docker Registry 2. 使用docker pull命令镜像 具体步骤: ### 步骤1:登录阿里云Docker Registry 在私有镜像之前,必须先登录到阿里云容器镜像服务。使用以下命令登录: ```bash docker login --username=<阿里云账号> registry.cn-hangzhou.aliyuncs.com ``` 执行后会提示输入码(阿里云账号的码)。如果开通了容器镜像服务,也可以使用开通时设置的Registry登录码(可以在容器镜像服务控制台设置)。 > 注意:如果使用子账号,需要确保该子账号具有操作镜像仓库的权限。 ### 步骤2:镜像 登录成功后,使用`docker pull`命令镜像。镜像的完整路径格式为: ``` registry.cn-hangzhou.aliyuncs.com/<命名空间>/<仓库名称>:<标签> ``` 例如,如果命名空间为`lxybj`,仓库名称为`myubuntu`,标签为`v1.0`,则命令为: ```bash docker pull registry.cn-hangzhou.aliyuncs.com/lxybj/myubuntu:v1.0 ``` ### 示例完整流程 ```bash # 登录(替换<username>为你的阿里云账号) docker login --username=<username> registry.cn-hangzhou.aliyuncs.com # 输入码(登录阿里云码或Registry独立码) # 镜像(替换命名空间、仓库名和标签) docker pull registry.cn-hangzhou.aliyuncs.com/lxybj/myubuntu:v1.0 # 查看的镜像 docker images ``` ### 常见问题 1. **登录失败**:检查用户名和码是否正确,确保网络连接正常。如果使用子账号,确认已授权。 2. **镜像失败**:检查镜像路径是否正确(包括命名空间、仓库名称和标签是否存在)。可以在阿里云容器镜像服务控制台查看镜像的完整路径。 3. **权限不足**:确保当前用户对目标镜像仓库权限(在阿里云控制台设置)。 ### 安全建议 - 不要在脚本中直接写入码,可以使用`docker login`保存凭证(默认保存在`$HOME/.docker/config.json`)。 - 对于自动化流程(如CI/CD),建议使用访问凭证(Access Token)代替码。 > 提示:阿里云容器镜像服务支持多个地域,如果仓库不在杭州(hangzhou),需要替换地域代码,如北京为`registry.cn-beijing.aliyuncs.com`。具体地域代码可在控制台查看。 ### 参考文档 - [阿里云容器镜像服务文档](https://help.aliyun.com/document_detail/60743.html) [^1] §§相关问题§§ 1. 如何将本地构建的Docker镜像推送到阿里云私有仓库? 2. 如何创建阿里云容器镜像服务的访问凭证? 3. 如何在Kubernetes中配置从阿里云私有仓库镜像?</think>### 在 Linux 中从阿里云私有容器仓库镜像的完整指南 #### 步骤 1:登录阿里云容器镜像服务 ```bash # 使用阿里云账号登录(需替换<username>为实际账号) docker login --username=<username> registry.cn-hangzhou.aliyuncs.com # 示例: # docker login --username=yourname@example.com registry.cn-hangzhou.aliyuncs.com ``` 执行后会提示输入码(阿里云账号码或独立仓库码)[^2] #### 步骤 2:获镜像完整路径 1. 登录[阿里云容器镜像控制台](https://cr.console.aliyun.com) 2. 找到目标镜像,复制完整路径(格式如下): ``` registry.cn-<地域>.aliyuncs.com/<命名空间>/<仓库名>:<标签> ``` 例如:`registry.cn-hangzhou.aliyuncs.com/my-namespace/myapp:v1.0`[^1] #### 步骤 3:私有镜像 ```bash # 使用完整镜像路径 docker pull registry.cn-hangzhou.aliyuncs.com/my-namespace/myapp:v1.0 # 验证结果 docker images | grep 'myapp' ``` #### 步骤 4:Kubernetes私有镜像(可选) 1. 创建镜像钥: ```bash kubectl create secret docker-registry aliyun-secret \ --docker-server=registry.cn-hangzhou.aliyuncs.com \ --docker-username=<username> \ --docker-password=<password> ``` 2. 在 Pod 配置中引用钥: ```yaml apiVersion: v1 kind: Pod metadata: name: private-app spec: containers: - name: app image: registry.cn-hangzhou.aliyuncs.com/my-namespace/myapp:v1.0 imagePullSecrets: - name: aliyun-secret ```[^3] #### 常见问题解决 **问题 1:登录失败** ```bash # 检查凭证存储位置 cat ~/.docker/config.json # 清除错误凭证 docker logout registry.cn-hangzhou.aliyuncs.com ``` **问题 2:权限不足** -阿里云控制台检查账号是否具有仓库「读」权限 - 子账号需授权 `AliyunContainerRegistryReadOnlyAccess` 策略 **问题 3:TLS 证书错误** ```bash # 临时跳过证书验证(不推荐生产环境) export DOCKER_CONTENT_TRUST=0 # 永久解决方案:更新CA证书 sudo yum update ca-certificates ``` #### 最佳实践 1. **使用访问令牌代替码**: ```bash # 控制台生成访问令牌后使用 docker login --username=<token_username> --password=<token> registry.cn-hangzhou.aliyuncs.com ``` 2. **配置镜像缓存加速**: ```bash # 在 /etc/docker/daemon.json 添加 { "registry-mirrors": ["https://<your_id>.mirror.aliyuncs.com"] } ``` 3. **自动化脚本示例**: ```bash #!/bin/bash REGISTRY="registry.cn-hangzhou.aliyuncs.com" IMAGE="$REGISTRY/my-namespace/myapp:latest" echo "登录阿里云容器仓库..." docker login -u $USERNAME -p $PASSWORD $REGISTRY echo "镜像: $IMAGE" docker pull $IMAGE ``` > ⚠️ **安全提示**: > - 敏感操作建议使用RAM子账号 > - 生产环境推荐使用VPC专用端点(`registry-vpc.cn-hangzhou.aliyuncs.com`) > - 定期轮转访问凭证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值