容器部署后,团队通常会卡在三个问题上:镜像存在哪里,怎么传上去,线上机器怎么快速拉下来。阿里云容器镜像服务(ACR)提供托管的 Docker 镜像仓库,能覆盖这三件事。本文按操作顺序讲开通、登录、推送、拉取和加速,最后附一个团队的改造案例。

一、开通服务并创建命名空间
在阿里云控制台搜索“容器镜像服务”,选好地域后开通。个人版免费,学习和小项目够用。企业版的仓库数量更多,安全功能也更全,具体规格和价格以官网为准。
开通后先建命名空间(Namespace)。它是镜像的一级目录,一般填公司或团队名。然后在命名空间里建镜像仓库(Repository),仓库名和服务名保持一致,比如 order-service。
二、设置访问凭证并登录
ACR 的登录密码和阿里云账号密码是两套东西,不要混用。在容器镜像服务控制台的“访问凭证”页面设置固定密码。团队共用时,建议每个成员、每条 CI 流水线各用一份凭证。哪条流水线出了问题,直接定位并撤销,不影响其他人。
在本机或服务器上执行登录命令。华东1(杭州)的公网地址是 registry.cn-hangzhou.aliyuncs.com:
docker login –username=你的阿里云账号 registry.cn-hangzhou.aliyuncs.com
回车后输入访问凭证密码。密码不要写进脚本或代码仓库,CI 环境里从流水线的密钥变量注入。
三、推送镜像
推送的关键在标签(tag)。标签必须带上完整的仓库地址,格式是“仓库地址/命名空间/仓库名:版本号”。假设本地已有镜像 order-service:1.0.3,操作如下:
- 打标签:docker tag order-service:1.0.3 registry.cn-hangzhou.aliyuncs.com/mycompany/order-service:1.0.3。命名空间如果拼错,后面的推送会失败,先核对一遍。
- 推送:docker push registry.cn-hangzhou.aliyuncs.com/mycompany/order-service:1.0.3
- 打开控制台的仓库详情页,确认新版本已经出现,并看一下漏洞扫描结果。扫描有高危项时,先处理再上线。
版本号尽量用具体版本号或 Git 提交哈希,少用 latest。用 latest 时,你无法确定线上跑的是哪次构建,回滚也会变麻烦。
四、拉取镜像与加速
同地域的阿里云 ECS 拉取镜像时,改用 VPC 内网地址,例如 registry-vpc.cn-hangzhou.aliyuncs.com。内网速度快,通常也不产生公网流量费用。命令结构和推送时一样,只换地址。
如果机器在本地开发环境或其他云厂商,拉公网镜像可能很慢,这时可以配置镜像加速器。在控制台的镜像工具页面能找到账号专属的加速地址,格式类似 https://xxxx.mirror.aliyuncs.com,其中 xxxx 是你账号自己的字符串。配置步骤如下:
- 编辑 /etc/docker/daemon.json,加入 “registry-mirrors”: [“https://xxxx.mirror.aliyuncs.com”]。引号和逗号容易出错,保存前检查一遍。
- 依次执行 sudo systemctl daemon-reload 和 sudo systemctl restart docker,让配置生效。
- 执行 docker info,在输出里确认 Registry Mirrors 已经显示这个地址。
加速器只影响拉取,推送仍然走仓库地址。daemon.json 有语法错误时,Docker 服务会起不来,改完先校验 JSON 格式,再重启服务。
五、案例:某电商团队的发布流程改造
某电商团队有 12 个微服务,早期把镜像传到公司内部的私有仓库。每次部署,运维要先从公网拉基础镜像,再推到内网仓库。一次发布大约 25 分钟,其中约 10 分钟花在镜像传输上。
团队做了三处调整。第一,流水线的推送目标改为 ACR 杭州地域的仓库,每个服务一个仓库。第二,同地域 ECS 上的服务改用内网地址拉取。第三,每条流水线配独立凭证,镜像版本号改为 Git 提交哈希。
调整后,同地域的拉取时间变短了,发布耗时降到约 15 分钟。这个数字是团队内部的估算,实际效果取决于镜像大小和网络环境,建议在自己的环境里测一次再做判断。回滚也简单了:把部署配置中的哈希改回上一版本即可,不用重新构建。
六、注意事项
- 地域要和服务器保持一致。跨地域拉取慢,还可能产生流量费用。
- 访问凭证定期轮换,人员离职后及时撤销对应凭证。
- 定期清理旧版本镜像,控制存储用量。
- 生产环境使用固定版本号,并保留至少一个可回滚的历史版本。
- 遇到 unauthorized 报错,先检查是否用了访问凭证,而不是账号密码。
按这五个环节走完,从开通到上线的配置就理清了。之后再根据构建频率和团队规模,决定要不要启用企业版的功能。