
# 使用企业版注册表上传镜像
#### 入门指引
容器镜像服务企业版提供企业级的云原生制品安全托管服务，提供容器镜像、Helm Chart，符合OCI规范制品的生命周期管理。面向具有严格数据安全及合规性要求、业务分布在多个地域、集群规模庞大的企业级容器客户；支持大规模、多地域、多场景下应用制品的高效分发；与云容器引擎CCE、云容器实例CCI无缝集成，帮助企业降低交付复杂度。
本节将介绍如何从零开始，购买容器镜像服务企业版注册表，并配置网络访问策略等，最终实现容器镜像的上传。
图1入门流程   
![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002622472005.png)
#### 准备工作
在使用容器镜像服务企业版之前，您需要完成注册华为云、实名认证的准备工作。
如果您还没有华为云账号，请参考以下步骤创建。
1. 打开[https://www.huaweicloud.com/](https://www.huaweicloud.com/ )，单击"注册"。
2. 根据提示信息完成注册，详细操作请参见[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)和[个人实名认证](https://support.huaweicloud.com/usermanual-account/zh-cn_topic_0077914254.html)。注册成功后，系统会自动跳转至您的个人信息界面。
 
 #### 一、安装容器引擎
首先，您需要准备一台虚拟机并安装docker容器引擎，请确保容器引擎为**1.11.2**及以上版本。
**购买并登录弹性云服务器**
参考[购买并登录Linux弹性云服务器](https://support.huaweicloud.com/qs-ecs/ecs_01_0103.html)创建一台带有弹性公网IP的Linux弹性云服务器。
作为演示，弹性云服务器和公网IP的规格不需要太高，例如弹性云服务器的规格为"1vCPUs \| 2GiB"、公网IP带宽为"1 Mbit/s"即可，操作系统以选择"CentOS 7.5"为例。
![](https://support.huaweicloud.com/qs2-swr/public_sys-resources/note_3.0-zh-cn.png)
- 您也可以使用其他机器安装容器引擎，不创建弹性云服务器。

- 如果您使用的操作系统为**EulerOS** ，请参考[EulerOS操作系统下安装](https://support.huaweicloud.com/usermanual-swr/swr_01_0006.html#swr_01_0006__li1756716406122)。
- 如果您使用的是Centos操作系统，建议选择CentOS7、CentOS7.2、CentOS7.3、CentOS7.4、CentOS7.5、CentOS7.6操作系统版本，否则可能导致安装异常。
 
创建完成后返回弹性云服务器列表，单击操作列的"远程登录"，以root用户登录弹性云服务器。
**安装Docker容器引擎**
使用如下命令快速安装容器引擎：
```
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
sudo systemctl daemon-reload
sudo systemctl restart docker
```
 #### 二、构建镜像
1. 在安装docker容器引擎的虚拟机上执行以下命令，下载2048应用的源码。 
   ```
   git clone https://gitee.com/jorgensen/2048.git
   ```
   ![](https://support.huaweicloud.com/qs2-swr/public_sys-resources/note_3.0-zh-cn.png)
   若提示"git: command not found"表示未安装Git工具，请先安装该工具（可使用**yum install git**命令）。
   
   
2. 下载成功后，进入"2048"目录。 
   ```
   cd 2048
   ```
   
   
3. 修改Dockerfile文件。 
   ```
   vim Dockerfile
   ```
   添加以下内容：
   ```
   FROM nginx
   COPY . /usr/share/nginx/html
   EXPOSE 80
   CMD ["nginx", "-g", "daemon off;"]
   ```
   - FROM：指定基础镜像nginx。
   
   - COPY：将2048源码拷贝到容器内的"/usr/share/nginx/html"目录。
   
   - EXPOSE：暴露容器的80端口。
   
   - CMD：指定容器运行时的默认命令。
   
   
   按"Esc"，输入**:wq**，保存并退出。
   有关 Dockerfile 的更多信息，请参考 [Dockerfile 参考](https://docs.docker.com/engine/reference/builder/)。
   
   
4. 使用docker build命令构建镜像。 
   ```
   docker build -t 2048 .
   ```
   其中，
   - -t表示给镜像加一个标签，也就是给镜像取名，这里镜像名为2048。
   
   - . 表示上下文路径，镜像构建命令将该路径下的所有内容打包给容器引擎帮助构建镜像。
   
   
   
   
5. 执行以下命令，查看已成功构建的2048镜像，版本为默认的latest。 
   ```
   docker images
   ```
   输出示例：
   ```
   # docker images
   REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
   2048         latest    8d421c503ed0   About a minute ago   134MB
   nginx        latest    dd34e67e3371   6 days ago           133MB
   ```
   您还可以看到一个nginx镜像，这个镜像是从镜像仓库下载下来，作为2048镜像的基础镜像使用的。
   
   
6. （可选）运行容器镜像。 
   镜像构建成功后，您可以执行docker run命令运行容器镜像。
   ```
   docker run -p 8080:80 2048
   ```
   docker run命令会启动一个容器，命令中-p是将虚拟机的8080端口映射到容器的80端口，即虚拟机的8080端口的流量会映射到容器的80端口，当您在本地机器的浏览器访问"http://ECS的弹性公网IP:8080"时，就会访问到容器中，此时浏览器返回的内容就是2048应用页面。
   
   
 
 #### 三、购买企业版注册表
1. 由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台。在页面左上角切换Region到您所在的Region。
2. 单击页面右上角"创建注册表"，进入购买界面。输入以下参数，具体参数含义如下： 
   ![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002624366889.png)
   
   - **计费模式**：当前仅支持按需计费模式。
   
   - **所属项目**：选择注册表所在区域或项目。注册表购买后区域或项目将无法更改，请根据容器集群所在地进行选择。
   
   - **注册表名称**：输入注册表名称。该名称将直接应用于该注册表的访问地址，购买后不可修改，请谨慎填写。
   
   - **套餐规格**：选择注册表规格。不同注册表规格具有不同的功能及配额，请参考界面上的规格对比进行选择。
   
   - **虚拟私有云** ：选择注册表所在虚拟私有云。如果没有选项可参见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)创建。
   
   - **子网**：选择注册表所在子网。
   
   - **企业项目**：针对企业用户使用，只有开通了企业项目的用户，或者权限为企业主账号的用户才可见。默认项目为"default"。
   
   - **自定义OBS桶**：可手动指定注册表的OBS桶，建议选择3AZ高可用的OBS桶。
   
   - **OBS桶加密** （静态数据存储加密）：SWR企业注册表支持使用系统托管的KMS密钥和用户已有的KMS密钥对镜像进行加密。SWR使用OBS进行镜像存储，开启OBS桶加密功能，SWR可以在上传镜像时使用系统托管的KMS密钥或用户已有的KMS密钥自动进行数据加密，以提高数据存储安全。
     ![](https://support.huaweicloud.com/qs2-swr/public_sys-resources/note_3.0-zh-cn.png)
     开启OBS桶加密会降低注册表实例性能，请您按需选择。
     - **国密加密：**在开启 OBS 桶加密功能时，注册表支持选用国密算法。开启后，上传的镜像将统一采用国密算法进行加密存储，满足更高级别的合规与安全要求。
      
   
   - **标签：**标签是对云上资源的一种标识。
   
   - **描述**：输入注册表的描述。
   
   
   
   
3. 单击右下角"立即购买"。
4. 返回注册表，查看创建进度。当注册表状态为"运行中"时，表示当前注册表已处于可用状态。 
   图2注册表
   ![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002593967432.png)
   ![](https://support.huaweicloud.com/qs2-swr/public_sys-resources/note_3.0-zh-cn.png)
   若注册表一直处于"创建中"，或者从列表中消失，请单击列表左上方的"操作记录"查看失败原因。若无法定位，您可[新建工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)联系我们。
   
   
 
 #### 四、配置网络访问权限
容器镜像服务企业版支持网络访问控制，新创建的企业版实例默认阻断全部访问来源，以确保您的镜像仓库内的数据安全。您可以根据业务需要配置访问控制策略，以最小范围放通业务客户端访问实例。
此处介绍如何为企业版实例配置内网访问控制。完成以下配置后，您可使用指定VPC内的云服务器通过内网访问企业仓库。
1. 由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台，在页面左上角切换Region到您所在的Region，单击注册表名称进入注册表详情页面。
2. 在左侧导航栏选择"访问管理 \> 访问控制"。
3. 选择"内网访问"页签，单击右上角"创建内网访问"。
4. 在弹出的窗口中选择所属项目、内网IP所属VPC和子网，如[图3]所示。
   
   图3创建内网访问   
   ![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002654955473.png)
   
   ![](https://support.huaweicloud.com/qs2-swr/public_sys-resources/note_3.0-zh-cn.png)
   如果下拉框需要选择的"所属项目"不是默认项目，请先切换到该项目下，访问企业注册表页面，进行授权后，再进该页面选择对应项目开通内网访问。
   
   
5. 单击"确定"。 
   等待"状态"变为"正常"，且"IP"不为空时，则说明内网访问已创建成功。
   图4内网访问   
   ![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002654950575.png)
   
   创建完成后，就可以从已添加的内网IP网段访问注册表。
   创建内网访问会在VPC终端节点（VPCEP）服务下创建一个对应的VPC终端节点，请勿删除，否则会影响访问。
   
   
 
 #### 五、创建访问凭证
镜像仓库需要使用访问凭证才能访问，此处以创建临时凭证为例。
1. 由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台，在页面左上角切换Region到您所在的Region，单击注册表名称进入注册表详情页面。
2. 在左侧导航栏选择"访问管理 \> 访问凭证"。选择"临时凭证"页签。
3. 选择"镜像"或"chart"，单击"生成临时访问凭证"，如[图5]所示。
   
   图5生成临时访问凭证   
   ![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002593807508.png)
   
   临时凭证会直接显示在页面上，您可以复制后使用。
   镜像访问凭证是一条Docker命令，用于访问注册表，注册表的使用详细说明请参见[镜像管理概述](https://support.huaweicloud.com/usermanual2-swr/swr_02_0519.html)。
   
   
 
 #### 六、创建命名空间
命名空间用于管理多个具有关联属性的镜像，不直接存储容器镜像，可对应企业内部的一个产品项目或部门。
1. 由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台，在页面左上角切换Region到您所在的Region。在注册表页面单击您的注册表名称进入注册表详情页面。
2. 在左侧导航栏单击"命名空间"。
3. 在右上角单击"创建命名空间"。
4. 填写命名空间名称，选择命名空间类型。 
   图6创建命名空间   
   ![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002593266338.png)
   
   - 公有命名空间：允许任何用户登录后下载命名空间内的制品，如需其他操作需在IAM上为用户授权。
   
   - 私有命名空间：需在IAM上为用户授权才可以对命名空间内的制品进行操作。
   
   
   
   
5. 单击"确定"。 
   命名空间创建成功后，您可以选择列表视图或卡片视图查看命名空间详情，在右上角单击![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002623545937.png)或![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002623705835.png)图标进行视图切换。
   
   
 
#### 七、上传镜像
1. 首先，您需要准备一台机器用于安装容器引擎，并在容器引擎上构建镜像。此处以在弹性云服务器 ECS上构建2048镜像为例。 
   ECS需满足如下要求：
   - 与[三、购买企业版注册表]中的企业版实例在同一个区域。
   
   - 已在[四、配置网络访问权限]中定义的内网允许访问范围内。
   
   - 安装的容器引擎版本Docker容器引擎客户端版本必须为18.06及以上，containerd容器引擎客户端版本必须为1.5.0及以上。
   
   
   详细指导请参见[安装容器引擎]和[构建镜像]。
   
   
2. 在ECS上执行[五、创建访问凭证]中获取的访问凭证，登录注册表。
   
   登录成功会显示"Login Succeeded"。
   
   
3. 执行以下命令为镜像打标签。 
   **docker tag** **\[镜像名称1:版本名称1\] \[注册表地址\]/\[命名空间名称\]/\[镜像名称2:版本名称2\]**
   其中：
   - **\[镜像名称1:版本名称1\]**请替换为您所要上传的实际镜像的名称和版本名称。
   
   - **\[注册表地址\]** 为注册表的访问地址，获取方式如下：
     由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台，在页面左上角切换Region到您所在的Region，单击注册表名称进入注册表详情页面，在"总览"页面获取访问地址，如[图7]所示。
     图7访问地址   
     ![](https://support.huaweicloud.com/qs2-swr/zh-cn_image_0000002624676028.png)
     
     
   
   - **\[命名空间名称\]** 请替换为您在[六、创建命名空间]中创建的命名空间。
   
   - **\[镜像名称2:版本名称2\]**请替换为您期待的镜像名称和版本名称。
   
   
   样例如下：
   **docker tag nginx:latest test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/library/nginx:1** **.1.1**
   
   
4. 上传镜像至注册表。 
   **docker push** **\[注册表地址\]/\[命名空间名称\]/\[镜像名称:版本名称\]**
   样例如下：
   **docker push test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/library/nginx:1.1.1**
   终端显示如下信息，表明上传镜像成功。
   ```
   fbce26647e70: Pushed 
   fb04ab8effa8: Pushed 
   8f736d52032f: Pushed 
   009f1d338b57: Pushed 
   678bbd796838: Pushed 
   d1279c519351: Pushed 
   f68ef921efae: Pushed 
   v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780
   ```
   在注册表详情页面"仓库"中可查看到对应的镜像信息。
   ![](https://support.huaweicloud.com/qs2-swr/public_sys-resources/note_3.0-zh-cn.png)
   镜像上传以后，您可以在CCE控制台创建工作负载。
   
   
 
