推送本地 Docker 镜像需先打标签(含仓库地址、命名空间、镜像名和标签)、登录目标仓库,再执行 docker push 完整镜像名;否则将因未登录、标签缺失或拼写错误等导致失败。

要将本地构建的 Docker 镜像推送到远程镜像仓库(如 Docker Hub、私有 Registry 或阿里云 ACR 等),核心命令是 docker push,但必须满足几个前提条件,否则会失败。
确保镜像已打上正确的标签(tag)
推送前,镜像名必须包含目标仓库地址、命名空间(用户名/组织名)、镜像名和可选的标签(如 :latest)。本地构建时默认只有镜像 ID 或简单名字(如 myapp),这类“裸名”无法直接推送。
- 查看本地镜像:运行
docker images,确认你要推送的镜像 ID 和当前 REPOSITORY:TAG - 重打标签示例(推送到 Docker Hub):
docker tag myapp:latest yourusername/myapp:1.0 - 推送到私有 Registry(如
registry.example.com:5000):docker tag myapp:latest registry.example.com:5000/myapp:1.0
登录目标镜像仓库
除部分公开只读 Registry 外,绝大多数都需要先登录认证。
- 登录 Docker Hub:
docker login(回车后输入用户名密码) - 登录私有 Registry:
docker login registry.example.com:5000 - 登录阿里云 ACR:
docker login --username=xxx registry.cn-hangzhou.aliyuncs.com - 登录成功后,凭证会保存在
~/.docker/config.json中
执行推送命令
使用 docker push 加上你打好的完整镜像名(含仓库地址和标签):
- 推送到 Docker Hub:
docker push yourusername/myapp:1.0 - 推送到私有 Registry:
docker push registry.example.com:5000/myapp:1.0 - 注意:不要写成
docker push myapp:1.0—— 缺少仓库前缀会导致 “denied: requested access to the resource is denied” 错误
常见报错与快速排查
unauthorized: authentication required → 未登录或登录失效,重新 docker login
denied: requested access to the resource is denied → 标签没带仓库前缀,或用户名/命名空间拼写错误
failed to parse layer 或网络超时 → 检查 Registry 地址是否可达,防火墙/Docker daemon 是否正常
manifest unknown → 推送前修改了镜像但没重新 build/tag,确保 tag 对应的是最新构建结果


















