对于使用Docker容器镜像部署的场景,推荐使用容器镜像部署物。计算巢提供了公共的ACR容器镜像实例用来托管保存,一个服务商对应一个命名空间进行多租户隔离。本文为您介绍容器镜像部署物使用场景与原理,以及如何创建和使用容器镜像部署物。
使用场景
通过公网拉取但希望私有化部署的Docker容器镜像,可使用容器镜像部署物通过临时密钥实现服务部署。
容器镜像部署物不支持后续的弹性自动伸缩或动态任务频繁拉取的需求。
实现原理
由于多个服务商的容器镜像存放在一个镜像仓库中,为了实现多租户隔离,目前采用一个服务商对应一个命名空间的方式进行容器镜像存放,在上传和拉取时根据服务商AliUid获取对应命名空间的临时密钥,权限控制以命名空间为维度。
应用原理
需要在服务的ROS模板中定义以下两个标识,在部署时进行替换。
-
{{ computenest::acrimage::yourimage }}容器镜像部署物标识位,计算巢会在部署服务模板时进行替换,替换为关联部署物对应的容器镜像地址,如compute-nest-registry.cn-hangzhou.cr.aliyuncs.com/aliUid1/volcanosh/vc-controller-manager:1.0 -
{{ computenest::acr::dockerconfigjson }}容器镜像仓库拉取密钥标识位,在部署时会替换为容器镜像拉取临时密钥,用来进行私有容器镜像的拉取。
使用容器镜像部署物进行部署的示例YAML,可以看到拉取密钥{{ computenest::acr::dockerconfigjson }}部署成了Secret computenestrepo,作为容器镜像部署物的imagePullSecret去拉取部署物替换后的容器镜像。
创建并使用
前提条件
已安装Docker并制作Docker镜像。如果您没有,请参见Docker的安装与使用。
创建容器镜像部署物
-
配置部署物的基本信息。
-
登录计算巢控制台,在左侧导航栏选择服务部署物,并在部署物区域中单击创建部署物。
-
在部署物信息区域,完成部署物信息填写。
配置项
说明
部署物名称
由中文、数字、英文及下划线组成,长度在 3~128 个字符之间,一个中文字等于 2 个字符,部署物名称创建后不可修改。
部署物版本名称
由中文、数字、英文及下划线组成,长度在 3~50 个字符之间,一个中文字等于 2 个字符。
部署物描述
简介长度在10-500个字符之间,一个中文字等于2个字符。
资源组
选择创建的部署所归属的资源组名称。
资源组对您拥有的云资源从用途、权限、归属等维度进行分组,实现企业内部多用户、多项目的资源分级管理。更多信息,请参见资源组。
标签配置
选择或填写完整的标签键和标签值,为部署物定标签。每个资源最多可绑定20条标签。若无可选的标签键和标签值,可创建自定义标签。创建自定义标签的详细操作,请参见创建并绑定自定义标签。
-
-
配置容器镜像部署物。
本节以上传
apache-php5镜像为例。-
在部署物内容区块,选择部署物类型为容器镜像。
-
单击获取访问凭证,可以获得上传容器镜像到计算巢仓库的命令。
获取访问凭证后,页面展示操作命令:使用
docker login命令登录计算巢镜像仓库,填写镜像名称和标签(如latest)后,使用docker tag命令对本地镜像打标,再使用docker push命令将已打标的镜像推送至仓库。-
登录命令行工具,输入登录命令登录计算巢镜像仓库。
docker login compute-nest-registry.cn-hangzhou.cr.aliyuncs.com --username=cr_temp_user --password=<临时Token> -
将您的容器镜像进行计算巢镜像仓库打标。
docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest compute-xxx-ry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest -
推送已打标的容器镜像。
docker push compute-nest-registry.cn-hangzhou.cr.aliyuncs.com/156345785543852/registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest The push refers to repository [compute-nest-registry.cn-hangzhou.cr.aliyuncs.com/156345785543852/registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5] 6bb81559e239: Pushed cea911103474: Pushed cc523d99ead5: Pushed b00b1ec7b8ef: Pushed 7715ecdbe18e: Pushed 5e755f0e0b5c: Pushed 2a1ce34e52b6: Pushed 28dc854edc91: Pushed 24fc817b31ed: Pushed 7cd75a52f72c: Pushed 05b156d2bc54: Pushed 8cc36998586f: Pushed ab73fa68e475: Pushed dbf739521f53: Pushed 3e019add9ad9: Pushed 18e3751aa1ef: Pushed 4eb95f543324: Pushed a594229cce80: Pushed 69a54e38f06b: Pushed d2808f8124fd: Pushed fe4c16cbf7a4: Pushed latest: digest: sha256:2afcd2b89f317e0570325817f4e8d9c93f12ac781779e365e456ae37aa297f7a size: 4700
-
-
执行成功后,在选择容器镜像中选取上传的容器镜像,并单击发布部署物。
-
-
查看部署物。
-
返回服务部署物页面,单击部署物名称,进入部署物详情界面查看部署进度。
-
当状态为可用时,表示创建完成。
-
使用容器镜像部署物
本节以创建私有化部署服务为例,重点介绍在创建服务时使用容器镜像部署物相关配置。
-
登录计算巢控制台。
-
在左侧导航栏中选择我的服务,在我创建的服务区域下单击创建新服务。
-
在创建新服务页面,创建服务的方式选择为自定义创建服务,服务类型选择为私有部署服务,单击下一步:配置服务。
-
根据提示填入服务基本信息,根据实际情况进行选择并输入ROS模板。
在服务ROS模板
ALIYUN::CS::ClusterApplication资源中定义访问凭证标识位{{ computenest::acr::dockerconfigjson }}和容器镜像部署物标识{{ computenest::acrimage::yourimage }} -
在部署物关联区块中设置容器镜像关联。单击选择部署物,在弹框中选择部署物和版本,最后单击确定完成容器镜像部署物替换。
-
完成服务的创建,并测试通过后, 请根据计算巢服务的发布审核标准进行自检,并提交审核。发布审核标准的详细信息,请参见发布审核标准。
-
服务创建完成后,可以在服务详情页查看部署物关联关系。
在服务详情页的部署关联页签下,单击容器镜像关联子页签,可查看关联标志符(如
{{ computenest::acrimage::nginx }})与对应的部署物信息。