Openshift使用builder服务账号登录Docker Registry提示认证未授权如何解决
故障原因及排查解决方案
常见故障原因与对应处理方法
- oc上下文未切换到builder服务账号
你当前oc cli登录的身份可能是普通用户而非项目的builder服务账号,先执行oc whoami验证返回结果是否为system:serviceaccount:<你的项目名称>:builder,如果不符,有两种修正方式:- 直接切换到builder账号登录:
oc login -u system:serviceaccount:<你的项目名称>:builder - 直接提取builder账号的token用于docker登录:将原登录命令替换为
docker login -u builder -p $(oc sa get-token builder -n <你的项目名称>) registry.pro-eu-west-1.openshift.com:443
- 直接切换到builder账号登录:
- 角色绑定范围错误
system:image-builder是项目级角色,仅在绑定的项目范围内生效。执行oc describe rolebinding system:image-builder -n <你的项目名称>检查subjects字段是否包含builder服务账号,若未绑定,执行以下命令完成绑定:oc policy add-role-to-user system:image-builder system:serviceaccount:<你的项目名称>:builder -n <你的项目名称> - Docker客户端证书信任缺失
若Openshift registry使用自签名证书,Docker客户端未信任该证书时会抛出误导性的鉴权失败报错。先通过curl验证鉴权逻辑是否正常:
若curl返回200状态码,说明是证书问题,将registry的根证书存入curl -v -u $(oc whoami):$(oc whoami --show-token) https://registry.pro-eu-west-1.openshift.com:443/v2//etc/docker/certs.d/registry.pro-eu-west-1.openshift.com:443/目录,重启Docker daemon即可。 - Registry对外访问限制
托管版Openshift集群通常会对registry的外部访问做IP白名单限制,你可以先进入集群内部的测试Pod执行相同的docker登录命令,若集群内可正常登录,联系集群管理员将你的客户端IP加入registry访问白名单即可。 - Registry地址配置错误
执行oc get route -n openshift-image-registry确认集群对外暴露的镜像仓库地址与你使用的地址完全一致,避免地址拼写、端口配置错误。
内容的提问来源于stack exchange,提问作者Basti
相关产品推荐
相关产品推荐

