You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artifactory中Docker镜像外部层拉取失败(未授权)问题求助

问题

我们已向Artifactory推送了一个更新后的Docker镜像。此前镜像清单中的两个外部层(foreign layers)如下:

{
                "mediaType": "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip",
                "size": 1718332879,
                "digest": "sha256:4612f6d0b889cad0ed0292fae3a0b0c8a9e49aff6dea8eb049b2386d9b07986f",
                "urls": [
                        "https://mcr.microsoft.com/v2/windows/servercore/blobs/sha256:4612f6d0b889cad0ed0292fae3a0b0c8a9e49aff6dea8eb049b2386d9b07986f"
                ]
        },
        {
                "mediaType": "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip",
                "size": 997587446,
                "digest": "sha256:ba8181afd4264392fbbf8df14fb4cddc55fbe085ab000e986b789678bc2bb171",
                "urls": [
                        "https://mcr.microsoft.com/v2/windows/servercore/blobs/sha256:ba8181afd4264392fbbf8df14fb4cddc55fbe085ab000e986b789678bc2bb171"
                ]
      }

而新镜像清单中这两个外部层的内容变为:

{
                    "mediaType": "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip",
                    "size": 1718332879,
                    "digest": "sha256:4612f6d0b889cad0ed0292fae3a0b0c8a9e49aff6dea8eb049b2386d9b07986f",
                    "urls": [
                            "https://docker.securethingz.com:443/artifactory/api/docker/stz-docker/v2/stz/ltsc2019/mingw64build/blobs/sha256:4612f6d0b889cad0ed0292fae3a0b0c8a9e49aff6dea8eb049b2386d9b07986f"
                    ]
            },
            {
                    "mediaType": "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip",
                    "size": 997587446,
                    "digest": "sha256:ba8181afd4264392fbbf8df14fb4cddc55fbe085ab000e986b789678bc2bb171",
                    "urls": [
                            "https://docker.securethingz.com:443/artifactory/api/docker/stz-docker/v2/stz/ltsc2019/mingw64build/blobs/sha256:ba8181afd4264392fbbf8df14fb4cddc55fbe085ab000e986b789678bc2bb171"
                    ]
            }

拉取新镜像时,除这两个外部层外其余层均可正常拉取,但这两个层多次重试后仍失败,旧镜像则可正常拉取。直接访问MCR的对应URL可正常下载文件,但访问Artifactory的对应URL时返回错误:

{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}

我们确认Artifactory已配置为允许匿名读取,使用的版本为Arty 7.41.7 rev 74107900。请问该问题的原因是什么,如何解决?


原因分析

  • 仓库路径权限未覆盖外部层存储位置:全局匿名读取配置未作用到stz/ltsc2019/mingw64build这个具体路径,或者该路径的权限规则未授予匿名用户读取权限。
  • 外部层未同步到Artifactory:推送新镜像时仅修改了清单中的URL,未将MCR上的外部层blob文件实际同步到Artifactory仓库,导致Artifactory返回权限错误(实际是资源不存在,但权限配置混淆了错误提示)。
  • Docker V2 API单独权限限制:Artifactory 7.x版本中,Docker仓库的V2 API访问权限需要单独配置,全局匿名读取可能不覆盖blob路径的访问规则。

解决方案

1. 修复仓库路径的匿名读取权限

  • 登录Artifactory管理界面,进入stz-docker仓库的Permissions配置页。
  • 检查是否存在针对stz/ltsc2019/mingw64build路径的权限规则,确保anonymous用户组拥有Read权限。
  • 若无对应规则,添加新规则:指定路径为stz/ltsc2019/mingw64build,授予anonymous组Read权限,保存后测试访问。

2. 手动同步外部层到Artifactory

使用skopeo工具将MCR上的外部层同步到目标仓库:

skopeo copy docker://mcr.microsoft.com/windows/servercore@sha256:4612f6d0b889cad0ed0292fae3a0b0c8a9e49aff6dea8eb049b2386d9b07986f docker://docker.securethingz.com:443/artifactory/stz-docker/stz/ltsc2019/mingw64build
skopeo copy docker://mcr.microsoft.com/windows/servercore@sha256:ba8181afd4264392fbbf8df14fb4cddc55fbe085ab000e986b789678bc2bb171 docker://docker.securethingz.com:443/artifactory/stz-docker/stz/ltsc2019/mingw64build

同步完成后重新拉取镜像测试。

3. 检查Docker仓库的V2 API配置

  • 进入ArtifactoryAdministration > Repositories > Docker > stz-docker配置页,确认Enable Docker V2 API已开启。
  • 检查Advanced设置中的Allow Anonymous Pull是否勾选,部分版本中该选项需单独开启,不依赖全局匿名读取配置。

4. 验证blob文件的存在性

  • 在ArtifactoryArtifacts页面,导航到stz-docker/stz/ltsc2019/mingw64build/blobs/sha256/路径,确认两个外部层的blob文件是否存在。
  • 若不存在,需重新推送镜像或手动上传对应blob文件。

内容的提问来源于stack exchange,提问作者pete neal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:52:13