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

Docker私有仓库删除镜像时报insufficient_scope 401错误

问题原因及解决方案
  • 确认私有Docker Registry服务端已开启删除权限
    Docker Registry默认禁用manifest删除操作,需在Registry服务的配置中显式开启:
    若通过环境变量启动Registry,添加参数:
    REGISTRY_STORAGE_DELETE_ENABLED=true
    若通过config.yml配置,添加如下配置段:
    storage:
      delete:
        enabled: true
    
    配置完成后重启Registry服务生效。
  • 修正获取Token时的scope参数错误
    你当前获取Token的请求中scope参数多了一个多余的斜杠:repository:my-repo/:*,正确的仓库scope格式为repository:<仓库名>:<权限>,仓库名末尾不需要额外斜杠,修改为:
    TOKEN=`curl -s \
        -H "Content-Type: application/json" --user myuser:mypassword \
        "http://mydockerregistry.com:8080/api/auth?service=mydockerregistry.com&scope=repository:my-repo:*" \
        | jq -r .token`
    
  • 确认认证账号拥有仓库删除权限
    多数Registry认证后端的pull,push权限不包含删除操作,你需要确认:
    1. myuser账号在认证系统中已被分配my-repo仓库的删除权限
    2. 若认证系统不支持*通配符权限,可将scope显式指定为repository:my-repo:pull,push,delete
  • 校验DIGEST变量的正确性
    你当前获取DIGEST的逻辑可能会带回车、换行等不可见字符,导致后续删除请求识别错误,可添加字符清洗逻辑:
    DIGEST=`curl -vk \
        -H "Authorization:Bearer $TOKEN" \
        -H "Accept:application/vnd.docker.distribution.manifest.v2+json" \
        https://mydockerregistry.com/v2/my-repo/manifests/latest 2>&1 \
        | grep "< Docker-Content-Digest:" | awk '{print $3}' | tr -d '\r\n'`
    
    执行完成后可先执行echo $DIGEST确认输出为标准的sha256摘要格式,无多余字符。
  • 额外校验逻辑
    可先执行curl -H "Authorization:Bearer $TOKEN" https://mydockerregistry.com/v2/my-repo/tags/list确认Token能正常访问仓库接口,排除Token本身解析错误、过期等问题。

内容的提问来源于stack exchange,提问作者Lucas Ricardo Grana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:45:03