阿里云容器镜像服务流程

20 min read

阿里云容器镜像服务服务地址

https://cr.console.aliyun.com/cn-hangzhou/instances

创建命名空间

位置: 容器镜像服务 / 实例列表/概览/命名空间

命名空间个人版本命名空间为三个,但是可以自由删除

创建镜像仓库

位置: 容器镜像服务 / 实例列表 / 镜像仓库

1661923596960.png

填写仓库的具体信息,其中名称和摘要是必填项

1661923644690.png

选择代码仓库

使用github作为代码仓库源:可以选择使用海外机房构建镜像,构建成功后推送至指定地域。如果您构建任务涉及的源代码仓库、容器镜像仓库等资源在国内,建议您关闭“海外机器构建”设置,使用国内构建。

勾选不使用缓存:每次构建时强制重新拉取基础依赖镜像,可能会增加构建时间

代码变更自动构建镜像: 当对应分支有代码提交后会自动触发构建

1661923835887.png

添加构建规则

此处添加出发构建的规则

1661935298513.png

手动触发镜像构建

1661924143529.png

查看构建日志

1661924200518.png

如遇构建排队执行缓慢,镜像构建最长需要2个小时,请稍等镜像构建完成。

使用镜像

  1. 登录阿里云Docker Registry
$ docker login --username=15387******@qq.com registry.cn-hangzhou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。您可以在访问凭证页面修改凭证密码。

  1. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/bytenote/wechat_photo_warehouse:[镜像版本号]
  1. 将镜像推送到Registry
$ docker login --username=15387******@qq.com registry.cn-hangzhou.aliyuncs.com$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/bytenote/wechat_photo_warehouse:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/bytenote/wechat_photo_warehouse:[镜像版本号]

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

选择合适的镜像仓库地址

从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。

  1. 示例

使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

$ docker imagesREPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZEregistry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

使用 "docker push" 命令将该镜像推送至远程。

$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

本地构建流程

Tag 为命令空间+版本号

docker build . -t registry.cn-hangzhou.aliyuncs.com/bytenote/wechat_photo_warehouse:0.0.2
docker push registry.cn-hangzhou.aliyuncs.com/bytenote/wechat_photo_warehouse:0.0.2

远程自动化登录脚本

#!/usr/bin/expect
spawn docker login --username=153871***@qq.com registry.cn-hangzhou.aliyuncs.com
expect "Password:"
send "your-password\r"
interact