首页/云/Docker 容器速查/docker push 推送镜像到仓库
镜像与构建107 条

docker push 推送镜像到仓库

把本地镜像推送到注册表:标签必须包含注册表地址(Docker Hub 用 用户名/仓库 形式),推送按层上传并返回内容摘要。

Docker 容器速查云更新于 2026-10-13

docker push 是什么

把本地镜像上传到镜像仓库,供其他机器拉取部署。推送按层进行:仓库里已有的层会跳过,只上传缺失的部分,因此同一基础镜像的多次推送通常很快。上传完成后仓库会给内容摘要,它是比标签更可靠的可复现引用。

基本信息

语法docker push [选项] 名称[:标签]
前置条件已登录目标仓库,本地镜像标签含仓库地址
常用选项--quiet 精简输出 --all-tags 推送该仓库全部标签
权限要求账号需具备目标命名空间的推送权限
返回内容各层上传进度与最终的内容摘要

典型使用场景

  • 发布新版本:构建完成后推送到仓库,供部署环境拉取
  • 跨环境分发:把镜像推到内网仓库,供离线或受限网络环境使用
  • 流水线交付:构建阶段负责推送,部署阶段只负责拉取,职责清晰
  • 备份基础镜像:自建基础镜像推送一份到仓库,避免本地丢失后无法重建
  • 多架构发布:推送多个架构的镜像并生成合并清单,供不同平台拉取

常用示例

常用示例
docker tag app/web:1.0 registry.example.com/team/app-web:1.0   # 先补全仓库地址
docker push registry.example.com/team/app-web:1.0               # 推送指定标签
docker push --quiet registry.example.com/team/app-web:1.0       # 精简输出
docker image inspect registry.example.com/team/app-web:1.0 --format '{{.RepoDigests}}'  # 取摘要
docker login registry.example.com                               # 未登录时先登录

常见失败与原因

现象原因处理办法
拒绝访问未登录或账号没有该命名空间的推送权限重新登录并确认权限范围
仓库不存在目标仓库未创建且不允许自动创建先在仓库侧创建命名空间与项目
层上传中断网络不稳定或代理限制重试即可,已上传的层不会重复传输
标签覆盖提示远端已有同名标签确认是否允许覆盖,发布用版本标签避免互相覆盖
镜像不存在本地名称或标签写错先列本地镜像核对完整名称

推送与拉取的配合

  • 推送完成后记录摘要,部署引用摘要可避免标签被覆盖带来的意外
  • 部署环境只保留拉取权限,减小凭据泄露后的影响范围
  • 内网环境自建仓库并配置同步策略,减少对外网仓库的依赖
  • 推送与拉取使用不同账号,便于审计追踪
  • 失败重试前先确认本地镜像仍在,避免拉取后又推送了一遍旧版本
推送同名标签会覆盖远端原标签。正在使用该标签的部署下次拉取会拿到新内容,发布流程里用版本号标签可以避免这类互相覆盖。
本地镜像名不带仓库地址时,推送目标会被解析到公共仓库。内部镜像推送前先补全地址,避免内容进错位置。

易错点

  • 没补全仓库地址就推送,镜像被推到公共仓库的同名位置,内部内容可能外泄
  • 用浮动标签反复推送,远端标签被覆盖,其他环境拉到的内容悄然改变
  • 凭据过期后推送失败,被误判成网络问题,反复重试浪费上线时间
  • 推送成功就认为发布完成,没有核对摘要与标签,部署时才发现拉的不是那份

数据来源与参考

  • Docker 官方 CLI 参考:docker push(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌