使用企业版注册表上传镜像
入门指引
容器镜像服务企业版提供企业级的云原生制品安全托管服务,提供容器镜像、Helm Chart,符合OCI规范制品的生命周期管理。面向具有严格数据安全及合规性要求、业务分布在多个地域、集群规模庞大的企业级容器客户;支持大规模、多地域、多场景下应用制品的高效分发;与云容器引擎CCE、云容器实例CCI无缝集成,帮助企业降低交付复杂度。
本节将介绍如何从零开始,购买容器镜像服务企业版注册表,并配置网络访问策略等,最终实现容器镜像的上传。
准备工作
在使用容器镜像服务企业版之前,您需要完成注册华为云、实名认证的准备工作。
如果您还没有华为云账号,请参考以下步骤创建。
- 打开https://www.huaweicloud.com/,单击“注册”。
- 根据提示信息完成注册,详细操作请参见注册华为账号并开通华为云和个人实名认证。注册成功后,系统会自动跳转至您的个人信息界面。
一、安装容器引擎
首先,您需要准备一台虚拟机并安装docker容器引擎,请确保容器引擎为1.11.2及以上版本。
- 参考购买并登录Linux弹性云服务器创建一台带有弹性公网IP的Linux弹性云服务器。
作为演示,弹性云服务器和公网IP的规格不需要太高,例如弹性云服务器的规格为“1vCPUs | 2GiB”、公网IP带宽为“1 Mbit/s”即可,操作系统以选择“CentOS 7.5”为例。
- 您也可以使用其他机器安装容器引擎,不创建弹性云服务器。
- 如果您使用的操作系统为EulerOS,请参考EulerOS操作系统下安装。
- 如果您使用的是Centos操作系统,建议选择CentOS7、CentOS7.2、CentOS7.3、CentOS7.4、CentOS7.5、CentOS7.6操作系统版本,否则可能导致安装异常。
- 创建完成后返回弹性云服务器列表,单击操作列的“远程登录”,以root用户登录弹性云服务器。
- 使用如下命令快速安装容器引擎。
curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh sudo systemctl daemon-reload sudo systemctl restart docker
二、构建镜像
- 在安装docker容器引擎的虚拟机上执行以下命令,下载2048应用的源码。
git clone https://gitee.com/jorgensen/2048.git
若提示“git: command not found”表示未安装Git工具,请先安装该工具(可使用yum install git命令)。
- 下载成功后,进入“2048”目录。
cd 2048
- 修改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,保存并退出。
- 使用docker build命令构建镜像。
docker build -t 2048 .
其中,
- -t表示给镜像加一个标签,也就是给镜像取名,这里镜像名为2048。
- . 表示上下文路径,镜像构建命令将该路径下的所有内容打包给容器引擎帮助构建镜像。
- 执行以下命令,查看已成功构建的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镜像的基础镜像使用的。
- (可选)运行容器镜像。
镜像构建成功后,您可以执行docker run命令运行容器镜像。
docker run -p 8080:80 2048
docker run命令会启动一个容器,命令中-p是将虚拟机的8080端口映射到容器的80端口,即虚拟机的8080端口的流量会映射到容器的80端口,当您在本地机器的浏览器访问“http://ECS的弹性公网IP:8080”时,就会访问到容器中,此时浏览器返回的内容就是2048应用页面。
三、购买企业版注册表
- 登录容器镜像服务企业版控制台。在页面左上角切换Region到您所在的Region。
- 单击页面右上角“创建注册表”,进入购买界面。输入以下参数,具体参数含义如下:

- 计费模式:当前仅支持按需计费模式。
- 所属项目:选择注册表所在区域或项目。注册表购买后区域或项目将无法更改,请根据容器集群所在地进行选择。
- 注册表名称:输入注册表名称。该名称将直接应用于该注册表的访问地址,购买后不可修改,请谨慎填写。
- 套餐规格:选择注册表规格。不同注册表规格具有不同的功能及配额,请参考界面上的规格对比进行选择。
- 虚拟私有云:选择注册表所在虚拟私有云。如果没有选项可参见创建虚拟私有云和子网创建。
- 子网:选择注册表所在子网。
- 企业项目:针对企业用户使用,只有开通了企业项目的用户,或者权限为企业主账号的用户才可见。默认项目为“default”。
- 自定义OBS桶:可手动指定注册表的OBS桶,建议选择3AZ高可用的OBS桶。
- OBS桶加密(静态数据存储加密):SWR企业注册表支持使用系统托管的KMS密钥和用户已有的KMS密钥对镜像进行加密。SWR使用OBS进行镜像存储,开启OBS桶加密功能,SWR可以在上传镜像时使用系统托管的KMS密钥或用户已有的KMS密钥自动进行数据加密,以提高数据存储安全。
开启OBS桶加密会降低注册表实例性能,请您按需选择。
- 国密加密:在开启 OBS 桶加密功能时,注册表支持选用国密算法。开启后,上传的镜像将统一采用国密算法进行加密存储,满足更高级别的合规与安全要求。
- 标签:标签是对云上资源的一种标识。
- 描述:输入注册表的描述。
- 单击右下角“立即购买”。
- 返回注册表,查看创建进度。当注册表状态为“运行中”时,表示当前注册表已处于可用状态。 图2 注册表

四、配置网络访问权限
容器镜像服务企业版支持网络访问控制,新创建的企业版实例默认阻断全部访问来源,以确保您的镜像仓库内的数据安全。您可以根据业务需要配置访问控制策略,以最小范围放通业务客户端访问实例。
此处介绍如何为企业版实例配置内网访问控制。完成以下配置后,您可使用指定VPC内的云服务器通过内网访问企业仓库。
- 登录容器镜像服务企业版控制台,在页面左上角切换Region到您所在的Region,单击注册表名称进入注册表详情页面。
- 在左侧导航栏选择“访问管理 > 访问控制”。
- 选择“内网访问”页签,单击右上角“创建内网访问”。
- 在弹出的窗口中选择所属项目、内网IP所属VPC和子网,如图3所示。
如果下拉框需要选择的"所属项目"不是默认项目,请先切换到该项目下,访问企业注册表页面,进行授权后,再进该页面选择对应项目开通内网访问。
- 单击“确定”。
等待“状态”变为“正常”,且“IP”不为空时,则说明内网访问已创建成功。
图4 内网访问
创建完成后,就可以从已添加的内网IP网段访问注册表。
创建内网访问会在VPC终端节点(VPCEP)服务下创建一个对应的VPC终端节点,请勿删除,否则会影响访问。
六、创建命名空间
命名空间用于管理多个具有关联属性的镜像,不直接存储容器镜像,可对应企业内部的一个产品项目或部门。
- 登录容器镜像服务企业版控制台,在页面左上角切换Region到您所在的Region。在“注册表页面单击您的注册表名称进入注册表详情页面。
- 在左侧导航栏单击“命名空间”。
- 在右上角单击“创建命名空间”。
- 填写命名空间名称,选择命名空间类型。 图6 创建命名空间
- 公有命名空间:允许任何用户登录后下载命名空间内的制品,如需其他操作需在IAM上为用户授权。
- 私有命名空间:需在IAM上为用户授权才可以对命名空间内的制品进行操作。
- 单击“确定”。
命名空间创建成功后,您可以选择列表视图或卡片视图查看命名空间详情,在右上角单击
或
图标进行视图切换。
七、上传镜像
- 首先,您需要准备一台机器用于安装容器引擎,并在容器引擎上构建镜像。此处以在弹性云服务器 ECS上构建2048镜像为例。
ECS需满足如下要求:
- 与三、购买企业版注册表中的企业版实例在同一个区域。
- 已在四、配置网络访问权限中定义的内网允许访问范围内。
- 安装的容器引擎版本Docker容器引擎客户端版本必须为18.06及以上,containerd容器引擎客户端版本必须为1.5.0及以上。
- 在ECS上执行五、创建访问凭证中获取的访问凭证,登录注册表。
登录成功会显示“Login Succeeded”。
- 执行以下命令为镜像打标签。
docker tag [镜像名称1:版本名称1] [注册表地址]/[命名空间名称]/[镜像名称2:版本名称2]
其中:
- [镜像名称1:版本名称1]请替换为您所要上传的实际镜像的名称和版本名称。
- [注册表地址]为注册表的访问地址,获取方式如下:
登录容器镜像服务企业版控制台,在页面左上角切换Region到您所在的Region,单击注册表名称进入注册表详情页面,在“总览”页面获取访问地址,如图7所示。
- [命名空间名称]请替换为您在六、创建命名空间中创建的命名空间。
- [镜像名称2:版本名称2]请替换为您期待的镜像名称和版本名称。
样例如下:
docker tag nginx:latest test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/library/nginx:1.1.1
- 上传镜像至注册表。
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
在注册表详情页面“仓库”中可查看到对应的镜像信息。
镜像上传以后,您可以在CCE控制台创建工作负载。


