
# 推送镜像到镜像仓库
#### 操作场景
推送镜像（也叫上传镜像），可以帮助您将本地的镜像推送到容器镜像服务的镜像仓库中，更方便地管理您的镜像。推送镜像到镜像仓库有两种方式：通过容器镜像引擎客户端推送镜像和通过SWR页面推送镜像。
- **容器引擎客户端推送镜像** ：是指在安装了容器引擎客户端的机器上使用docker命令或者ctr命令将镜像推送到容器镜像服务的镜像仓库。适用于大镜像的上传。
  ![](https://support.huaweicloud.com/usermanual-swr/public_sys-resources/note_3.0-zh-cn.png)
  容器引擎客户端推送镜像既可走内网链路也可走外网链路。详情请参见[配置访问网络](https://support.huaweicloud.com/bestpractice-swr/swr_bestpractice_0013.html)。
  

- **SWR页面推送镜像**：是指直接通过SWR控制台页面将镜像推送到容器镜像服务的镜像仓库。适用于小镜像的推送。
 
#### 前提条件
- 已创建组织，请参见[创建组织](https://support.huaweicloud.com/usermanual-swr/swr_01_0014.html#swr_01_0014__section12921632181415)。
- 已准备好容器引擎客户端。
- 使用页面推送镜像时请确保镜像已保存为tar或tar.gz文件，具体请参见[制作镜像压缩包](https://support.huaweicloud.com/usermanual-swr/swr_01_0006.html#swr_01_0006__section3433103111126)。
 
#### 约束与限制
- 使用docker容器引擎客户端推送镜像时，需确保docker容器引擎客户端必须为18.06及以上的版本；
- 镜像的每个layer大小不能超过50G；
- 单个租户同时并发推送镜像layer总数不大于20个。
- 页面推送镜像每次最多上传10个文件，单个文件大小（含解压后）不得超过2G。且仅支持推送18.06及以上的版本Docker容器引擎客户端制作的镜像压缩包。
- 不支持推送Open Container Initiative（OCI）规范（v1.0 和 v1.1）的镜像。可使用企业版SWR进行推送。
- 单个租户可推送的镜像配额为500个，镜像版本配额为300个。超过配额将会推送失败。
 
#### 推送镜像到镜像仓库
- 小镜像可以使用页面推送镜像，暂不支持断点续传。大镜像推荐使用客户端推送。

- SWR对存储的镜像数量有配额限制，请及时老化不再使用的镜像。
 
- [容器引擎客户端推送镜像（推荐）]
  
  docker容器引擎客户端
  1. [制作容器镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0006.html#swr_01_0006__section135321459915)或[导入镜像文件](https://support.huaweicloud.com/usermanual-swr/swr_01_0006.html#swr_01_0006__section250435717224)
  
  2. 连接容器镜像服务。
     1. 登录[SWR控制台](https://console.huaweicloud.com/swr/#/swr/dashboard)。
     
     2. 选择左侧导航栏的"总览"，单击页面右上角的"登录指令"，在弹出的页面中单击![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002509577659.png)复制登录指令。
        
        ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002630062850.png "点击放大")
        
        ![](https://support.huaweicloud.com/usermanual-swr/public_sys-resources/note_3.0-zh-cn.png)
        - 临时登录指令支持用户自定义临时登录有效时间，支持设置有效期是15分钟-24小时。若需要长期有效的登录指令，请参见[获取长期有效的登录或推拉镜像指令](https://support.huaweicloud.com/usermanual-swr/swr_01_1000.html)。获取了长期有效的登录指令后，在有效期内的临时登录指令仍然可以使用。
        
        - 登录指令末尾的域名为镜像仓库地址，请记录该地址，后面会使用到。
          
     
     3. 在安装容器引擎的机器中执行上一步复制的登录指令。 登录成功会显示"Login Succeeded"。
        
      
  
  3. 在安装容器引擎的机器上执行如下命令，为**nginx** 镜像打标签。
     ```
     docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2]
     其中，
     ```
     - \[镜像名称1:版本名称1\]：请替换为您所要推送的实际镜像的名称和版本名称。
     
     - \[镜像仓库地址\]：可在SWR控制台上查询，即[2.b]中登录指令末尾的域名。
     
     - \[组织名称\]：请替换为您创建的组织。
     
     - \[镜像名称2:版本名称2\]：请替换为您期待的镜像名称和镜像版本。
     
     
     示例：
     ```
     docker tag nginx:v1 swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1
     ```
     
  
  4. 推送镜像至镜像仓库。
     ```
     docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2]
     ```
     示例：
     ```
     docker push swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1
     ```
     终端显示如下信息，表明推送镜像成功。
     ```
     The push refers to repository [swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1]
     fbce26647e70: Pushed 
     fb04ab8effa8: Pushed 
     8f736d52032f: Pushed 
     009f1d338b57: Pushed 
     678bbd796838: Pushed 
     d1279c519351: Pushed 
     f68ef921efae: Pushed 
     v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780
     ```
     返回容器镜像服务控制台，在"我的镜像"页面，执行刷新操作后可查看到对应的镜像信息。
     
   
  Containerd容器引擎客户端
  1. 登录[SWR控制台](https://console.huaweicloud.com/swr/#/swr/dashboard)。
  
  2. 在左侧导航栏选择"我的镜像"，单击右侧镜像名称。
  
  3. 在镜像详情页面中，进入"Pull/Push指南"页签，复制Containerd容器引擎的镜像推送指令。
  
  4. 以root用户登录containerd引擎所在的虚拟机。
  
  5. 在虚拟机中执行[3]复制的镜像上传指令。
     ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002659179388.png "点击放大")
     
  
  6. 检查镜像是否上传成功。
     ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002689139001.png "点击放大")
     ![](https://support.huaweicloud.com/usermanual-swr/public_sys-resources/note_3.0-zh-cn.png)
     - 如果上传的镜像达到配额，不能上传新的镜像，但是存量镜像如果镜像版本没有超过配额仍可继续上传。
     
     
     
     - 如果上传的某个镜像版本达到配额，则该镜像不能继续上传，其他镜像不受影响。
     
     - 并发推送镜像或镜像版本时，可能存在推送成功的镜像或镜像版本超过配额的场景。此时需先删除所有超出配额的镜像或镜像版本，然后删除镜像或镜像版本才能释放出可用配额。
       
   
  **常见问题**
  [为什么使用客户端推送镜像失败？](https://support.huaweicloud.com/swr_faq/swr_faq_0006.html)
  [推送镜像其他问题](https://support.huaweicloud.com/swr_faq/swr_faq_0039.html)
- [页面上传镜像]
  **操作步骤**
  1. 登录[SWR控制台](https://console.huaweicloud.com/swr/#/swr/dashboard)。
  
  2. 在左侧导航栏选择"我的镜像"，单击右上角"页面上传"。
  
  3. 在弹出的窗口中选择组织，单击"选择镜像文件"，选择要上传的镜像文件。 
     ![](https://support.huaweicloud.com/usermanual-swr/public_sys-resources/note_3.0-zh-cn.png)
     多个镜像同时上传时，镜像文件会按照顺序逐个上传，不支持并发上传。
     图1上传镜像   
     ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002090982106.png "点击放大")
     
     
  
  4. 单击"开始上传"。 
     待任务进度显示"上传完成"，表示镜像上传成功。
     
     
  
  
  ![](https://support.huaweicloud.com/usermanual-swr/public_sys-resources/note_3.0-zh-cn.png)
  - 如果推送的镜像达到配额，不能推送新的镜像，但是存量镜像如果镜像版本没有超过配额仍可继续推送。
  
  
  
  - 如果推送的某个镜像版本达到配额，则该镜像不能继续推送，其他镜像不受影响。
  
  - 并发推送镜像或镜像版本时，可能存在推送成功的镜像或镜像版本超过配额的场景。此时需先删除所有超出配额的镜像或镜像版本，然后删除镜像或镜像版本才能释放出可用配额。
   
  **常见问题**
  [为什么通过页面上传镜像失败？](https://support.huaweicloud.com/swr_faq/swr_faq_0017.html)
  [推送镜像其他问题](https://support.huaweicloud.com/swr_faq/swr_faq_0039.html)
#### 镜像推送完成后相关操作
镜像推送完成后，您还可以进行以下操作：
表1操作说明 
| 操作                | 说明                                                                     | 相关文档                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| 在CCE集群中使用镜像创建工作负载 | 镜像推送成功后，在CCE集群中创建工作负载时可选择已推送的镜像。                                       | [创建无状态负载（Deployment）](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html)、[创建有状态负载（StatefulSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0048.html)、[创建普通任务（Job）](https://support.huaweicloud.com/usermanual-cce/cce_10_0150.html)、[创建定时任务（CronJob）](https://support.huaweicloud.com/usermanual-cce/cce_10_0151.html) |
| 编辑镜像属性            | 镜像推送后默认为私有镜像，您可以设置镜像的类型（"公开"或"私有"）、分类及描述。                              | [编辑镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0016.html)                                                                                                                                                                                                                                                                          |
| 共享镜像              | 镜像推送后，您可以共享私有镜像给其他账号，并授予下载该镜像的权限。                                      | [共享镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0026.html)                                                                                                                                                                                                                                                                          |
| 配置镜像触发器           | 容器镜像服务可搭配云容器引擎CCE、云容器实例CCI一起使用。实现镜像版本更新时自动更新使用该镜像的应用。                  | [镜像触发器](https://support.huaweicloud.com/usermanual-swr/swr_01_0100.html)                                                                                                                                                                                                                                                                         |
| 设置镜像老化规则          | 镜像推送后，您可以添加镜像老化规则。容器镜像服务提供了按照镜像存活时间和保留镜像版本数目两种老化处理规则。                  | [镜像老化](https://support.huaweicloud.com/usermanual-swr/swr_01_0102.html)                                                                                                                                                                                                                                                                          |
| 同步镜像到其他区域         | 您可以使用镜像同步功能帮助您把最新推送的镜像版本同步到其他区域镜像仓库内。支持自动同步和手动同步两种方式。                  | [镜像同步](https://support.huaweicloud.com/usermanual-swr/swr_01_0101.html)                                                                                                                                                                                                                                                                          |
| 扫描镜像漏洞            | 容器镜像服务为您提供了镜像安全扫描的功能，您只需要一键就可以对您的镜像进行安全扫描。                             | [镜像漏洞扫描](https://support.huaweicloud.com/usermanual-swr/swr_01_0042.html)                                                                                                                                                                                                                                                                        |
| 设置镜像加速器           | 由于运营商网络原因，会导致您拉取第三方镜像仓库的镜像(例如Docker Hub)变慢甚至下载失败。华为云容器镜像服务提供了镜像下载加速功能。 | [设置镜像加速器](https://support.huaweicloud.com/usermanual-swr/swr_01_0045.html)                                                                                                                                                                                                                                                                       |
   
