
# 如何下载企业仓镜像
本章节介绍如何拉取企业仓库中的镜像。
#### 使用场景
需要使用企业仓库中的镜像。
#### 约束与限制购买
- 已有容器镜像服务企业仓库，操作步骤可参见[购买仓库](https://support.huaweicloud.com/usermanual2-swr/swr_02_0408.html)。
- 仓库中已上传镜像，操作步骤可参见[镜像仓库](https://support.huaweicloud.com/usermanual2-swr/swr_02_0421.html)。
- 使用SWR企业版镜像仓库镜像时，请确保工作负载运行的节点可访问对应的企业版镜像仓库实例。
 
#### 创建SWR企业版镜像仓库密钥
1. 登录[容器镜像服务企业版控制台](https://console.huaweicloud.com/swr-instance/?locale=zh-cn)，进入需要拉取的企业仓，左侧导航栏选择"访问管理-\>访问控制"，单击右上角"创建内网访问"并配置在CCI 2.0中命名空间使用的VPC和子网。创建成功后记录可供访问的IP地址。
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002242866973.png "点击放大")
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002242747657.png "点击放大")
   
   
   
2. 左侧导航栏选择"访问管理-\>域名管理"，记录默认域名（默认域名不可编辑）。
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002242748201.png "点击放大")
   
   
3. 左侧导航栏选择"访问管理-\>访问凭证"，单击"新建长期凭证"创建凭证并下载csv文件。
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002207949954.png "点击放大")
   
   
   
4. 登录[DNS控制台](https://console.huaweicloud.com/dns/?#/dns/dashboard)，单击左侧导航栏"内网域名"，再单击右上角"创建内网域名"，配置在CCI 2.0中命名空间使用的VPC和步骤[2]中的默认域名。
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002211433724.png "点击放大")
   
   
   
5. 内网域名创建完成后，进入详情添加记录集，配置步骤[1]中获得的IP地址。
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002207953782.png "点击放大")
   
   
   
6. 登录[云容器实例 CCI2.0](https://console.huaweicloud.com/cci2.0/?#/cci/cluster/list)控制台。
7. 在左侧导航栏选择"配置中心"，选择"密钥（Secret）"，单击"YAML创建"。创建secret，secret示例如下：
   
   ```
   kind: Secret
   apiVersion: cci/v2
   metadata:
     name: ${secret_name}                      # secret名称
   data:
     .dockerconfigjson: ${access_credential}   # 访问swr企业仓的凭证
   type: kubernetes.io/dockerconfigjson
   ```
   ${access_credential}，为json格式化的凭证base64编码后的结果，按如下方法获取：
   ```
   将步骤3获取的csv文件内容填入以下命令中：
   echo -n '{"auths":{"${url}":{"username":"${user_name}","password":"${password}"}}}' | base64 | sed ':a;N;$!ba;s/\n//g'
   ${url}为步骤2中的默认域名，${user_name}为csv文件中的用户名，${password}为csv文件中的密码。
   执行该命令，获得base64编码后的访问凭证，填入secret yaml中的${access_credential}中，最后创建secret。
   ```
   
   
8. 单击左侧导航栏"负载管理"，选择无状态负载，单击"YAML创建"。 
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002211495756.png "点击放大")
   
   
   
9. 使用企业仓镜像创建无状态负载，yaml示例如下： 
   ```
   kind: Deployment
   apiVersion: cci/v2
   metadata:
     name: swr-test
   spec:
     replicas: 1
     selector:
       matchLabels:
         app: swr-test
     template:
       metadata:
         labels:
           app: swr-test
       spec:
         containers:
           - name: container0
             image: ${image:tag}   # 企业仓镜像地址，可从SWR镜像管理处查询，模板为${url}/${namespace}/${image-name}@sha256:${sha256}
             resources:
               limits:
                 cpu: 500m
                 memory: 1Gi
               requests:
                 cpu: 500m
                 memory: 1Gi
         imagePullSecrets:
           - name: ${secret-name}  # 步骤7中创建的secret名称
   ```
   
   
10. 查看创建出的pod事件，观察拉取镜像是否成功。 
    ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002207989880.png "点击放大")
    
    
    
 
