Artifactory远程仓库拉取镜像报错:manifest unknown求助
Artifactory远程Docker仓库拉取镜像失败排查与解决
问题场景
在新Artifactory服务器上配置了指向旧Artifactory服务器虚拟Docker仓库的远程Docker仓库:
- 已验证访问旧服务器的凭据在UI端有效,且能在新服务器UI看到旧服务器的目录结构与所有制品(均显示“未缓存”,为上游仓库正常状态)
- 将该远程仓库添加至新服务器的虚拟Docker仓库后,通过远程或虚拟仓库拉取旧服务器镜像失败
报错信息
拉取远程仓库镜像时的报错:
Error response from daemon: manifest for obc-test-remote.myartifactoryserver.cloud/base-image:1.1.30 not found: manifest unknown: The named manifest is not known to the registry
拉取虚拟仓库镜像时的报错:
Error response from daemon: manifest for obc-test-virtual.myartifactoryserver.cloud/base-image:1.1.30 not found: manifest unknown: The named manifest is not known to the registry
已确认前置条件
- Docker登录新服务器成功
- 能以相同语法从新服务器的其他虚拟仓库拉取镜像
- 已取消勾选远程仓库配置中的“Block pulling of image manifest v2 schema 1”选项
排查与解决步骤
1. 核对远程仓库URL配置
确认远程仓库的URL是否指向旧Artifactory的Docker虚拟仓库专属访问路径,比如旧仓库的路径应为https://old-artifactory-url/docker-virtual(若Artifactory部署在非根路径,需额外加上对应上下文路径)。禁止直接指向旧Artifactory的根URL,必须指定到具体的Docker虚拟仓库层级。
2. 匹配仓库类型与路径规则
- 新服务器的远程仓库必须配置为Docker类型,确保仓库布局选择标准Docker布局
- 检查远程仓库的“Path Prefix”设置,确认是否需要添加前缀以对齐旧仓库的镜像存储路径,避免路径不匹配导致的404
3. 校验镜像名称的一致性
Docker镜像名称大小写敏感,需确认拉取命令中的base-image与旧仓库中的镜像名称完全一致(包括大小写)。同时对照新服务器UI显示的旧仓库目录结构,确认镜像的完整路径是否与拉取命令中的路径完全匹配。
4. 直接测试旧仓库拉取
在新服务器所在网络环境中,直接拉取旧仓库的镜像:
docker pull old-artifactory-url/docker-virtual/base-image:1.1.30
如果直接拉取失败,说明问题出在旧仓库的镜像可用性或网络连通性;如果成功,则回到新服务器的远程仓库配置排查。
5. 查看Artifactory请求日志
查看新Artifactory的请求日志(通常路径为$ARTIFACTORY_HOME/logs/request.log),定位拉取镜像时的请求记录,重点关注:
- 是否存在404、403等错误码
- 授权信息是否正常传递到旧仓库
- 请求路径是否被错误重写
6. 验证缓存与权限
- 在新服务器UI中找到目标镜像,点击“Cache Remote Item”手动触发镜像清单缓存
- 检查旧仓库的权限配置,确认用于访问的凭据拥有该镜像的拉取权限(UI能看到目录不代表拥有具体镜像的拉取权限)
7. 兼容性与参数测试
- 确认Docker客户端版本与新旧Artifactory版本兼容,部分旧版Artifactory对Docker v2 manifest的支持存在差异
- 尝试添加
--disable-content-trust参数拉取,排除内容信任验证问题:
docker pull obc-test-remote.myartifactoryserver.cloud/base-image:1.1.30 --disable-content-trust
内容的提问来源于stack exchange,提问作者DeirdreRodgers
相关产品推荐
相关产品推荐

