Drone CI拉取私有镜像仓库镜像时出现认证未授权错误
问题诱因
- 密钥创建命令错误:执行
drone secret add时--data参数未加@前缀,Drone不会读取对应路径的文件内容,只会将~/.docker/config.json字符串作为密钥值存储,完全不符合Docker认证配置的格式要求,导致拉取镜像时无法识别有效认证信息。 - 认证配置格式不兼容:
~/.docker/config.json中auths的key使用了带https://协议前缀的写法,多数容器运行时只匹配纯域名格式的Registry地址,无法和待拉取镜像所属的registry.example.com域名对应,导致认证信息匹配失败。
修复方案
- 先修改本地Docker认证配置,将auths的key改为纯Registry域名:
{ "auths": { "registry.example.com": { "auth": "MYLEGITTOKEN" } } }
- 删除原有错误的镜像拉取密钥:
drone secret rm --name docker-token --repository some/repo
- 重新创建正确的密钥,注意
--data参数值前加@前缀,指定读取文件内容:
drone secret add --name docker-token --data @~/.docker/config.json --repository some/repo
- 若修复后仍报错,可在创建密钥时显式开启拉取权限,适配旧版本Drone的权限要求:
drone secret add --name docker-token --data @~/.docker/config.json --repository some/repo --allow-pull true
内容的提问来源于stack exchange,提问作者Keval
相关产品推荐
相关产品推荐

