docker镜像拉取推送关键在路径准确、标签规范、认证可靠;拉取需确认完整地址与标签,多架构加--platform,推荐sha256校验;推送须构建、标记、登录三步缺一不可;私有仓库需检查https配置、项目权限及命名空间一致性。

拉取和推送 Docker 镜像本身不难,关键在路径准确、标签规范、认证可靠——这三个环节出错,90% 的失败都发生在这里。
拉取镜像:看清地址、平台与标签
拉取前先确认镜像完整路径:公共镜像如 nginx:1.25.3 默认走 Docker Hub;私有仓库必须带域名或 IP,例如 harbor.example.com/project/app:v2.1。
- 多架构场景下加
--platform=linux/arm64,避免拉到不兼容的镜像 - 用
@sha256:...替代标签拉取,可锁定确切版本,绕过标签被覆盖的风险 - 脚本中批量拉取建议加
-q参数静默运行,减少日志干扰
推送镜像:三步不能少——构建、标记、登录
本地镜像默认没有远程仓库路径,直接 push 会报错“denied: requested access to the resource is denied”。必须先完成三件事:
- 用
docker build -t myapp:v1.0 .构建并打本地标签 - 用
docker tag myapp:v1.0 registry.company.com/team/myapp:v1.0重标为远端格式 - 执行
docker login registry.company.com(输入账号密码),认证信息自动存入~/.docker/config.json
私有仓库特别注意点
Harbor、ECR 或自建 Registry 推送时,除了域名要写全,还需检查几项:
- 仓库是否启用 HTTPS?若用 HTTP,需在 Docker daemon.json 中配置
"insecure-registries" - 目标项目(Project)是否存在且当前用户有 push 权限?Harbor 中权限由项目级别 RBAC 控制
- 镜像名中的命名空间(如
team/myapp)必须与仓库内实际项目路径一致
验证与排错小技巧
推送后别急着跑容器,先快速验证是否成功:
- 浏览器访问仓库 Web 页面,或用
curl -X GET https://registry.company.com/v2/_catalog?n=100查看镜像列表(需带认证 token) - 本地执行
docker pull registry.company.com/team/myapp:v1.0测试拉取通路 - 失败时重点看错误关键词:
unauthorized是认证问题,not found是路径/标签错,denied多为权限不足











