关键在于前置准备、标签合规和正确登录:需先在ACR创建命名空间与仓库并获取完整仓库地址(含地域及实例标识),再用该地址登录(docker login --username=账号 仓库域名),最后严格按仓库域名/命名空间/仓库名:标签格式打标并推送。

直接用 docker push 推送本地镜像到阿里云 ACR,关键不在命令本身,而在于前置准备是否到位、标签是否合规、登录是否正确。只要这三步不出错,推送过程基本一次成功。
确认ACR仓库已创建并获取完整地址
在阿里云控制台开通「容器镜像服务」(推荐个人版,免费)后,需完成:创建命名空间(如 wujingze)、创建镜像仓库(如 wujingze)、选择「本地仓库」类型。创建完成后,页面会直接显示官方推送命令模板,其中包含完整仓库地址,例如:
crpi-z3vnuw2otv58bcad.cn-hangzhou.personal.cr.aliyuncs.com/wujingze/wujingze这个地址必须完整用于后续 docker tag 和 docker push,不能省略地域前缀(如 cn-hangzhou)或实例标识(如 crpi-z3vnuw2otv58bcad)。
使用 docker login 正确登录目标仓库
登录必须针对你将要推送的完整域名,而不是通用域名(如 registry.cn-hangzhou.aliyuncs.com)。错误登录会导致 401 Unauthorized 错误。
- 执行命令:
docker login --username=你的阿里云账号 crpi-z3vnuw2otv58bcad.cn-hangzhou.personal.cr.aliyuncs.com - 密码是「访问凭证」中设置的固定 Registry 密码(非阿里云控制台登录密码)
- 登录成功后,
~/.docker/config.json中会出现对应域名的 auth 记录
打标签(tag)必须严格匹配仓库路径
本地镜像 ID(如 3ad36e998880)不能直接推送,必须重打标签,格式为:
例如:
docker tag 3ad36e998880 crpi-z3vnuw2otv58bcad.cn-hangzhou.personal.cr.aliyuncs.com/wujingze/wujingze:flink1.19.1-jdk8u151
注意点:
- 命名空间和仓库名必须与控制台创建的一致,区分大小写
- 标签建议用语义化版本(如
v1.2.0),避免仅用latest(尤其开启「镜像不可变」后,latest是唯一可覆盖的标签) - 若启用「镜像版本不可变」功能,相同标签第二次推送会失败,并提示
The requested tag already exists and cannot be overwritten
执行 push 并验证结果
标签打好、登录成功后,执行推送:
docker push crpi-z3vnuw2otv58bcad.cn-hangzhou.personal.cr.aliyuncs.com/wujingze/wujingze:flink1.19.1-jdk8u151
成功输出含 digest: sha256:... 和 Status: Image pushed 字样。随后可立即登录 ACR 控制台,在对应仓库的「镜像版本」页签查看该 Tag 是否已存在,镜像层是否全部上传完成。


















