Jenkins推送Docker镜像报访问拒绝、认证失败错误原因咨询
报错原因
你遇到的denied: requested access to the resource is denied、unauthorized: authentication required属于Docker仓库鉴权失败错误,核心是推送操作的发起方(Jenkins)没有获得目标仓库的推送权限,常见触发场景如下:
- 登录态不互通:你在本地机器个人用户下执行的Docker登录,生成的鉴权凭证只存在于当前个人用户的
~/.docker/config.json文件里。Jenkins执行任务时默认使用独立的jenkins系统用户运行,不会读取你个人用户目录下的Docker凭证,等于Jenkins侧根本没完成目标仓库的登录,发起推送请求时自然会被判定为未授权。 - 镜像标签不符合仓库规范:推送镜像时标签必须匹配仓库的路径规则:如果推Docker Hub公共仓库,标签必须以你的Docker个人账号名为命名空间前缀,格式为
<你的Docker账号>/image/name:<tag>,如果直接打image/name的标签,Docker会默认尝试向官方公共镜像库推送,普通用户没有官方库的写入权限,会直接被拒绝;如果推自建私有仓库,标签还要前置私有仓库的服务地址,比如your-registry.com/namespace/image/name:tag,标签路径不对时仓库会判定你没有对应资源的访问权限。 - Jenkins侧配置的凭证无效:如果你已经给Jenkins配置了Docker仓库的凭证,需要排查是否存在凭证信息错误:比如账号密码输入错误、使用的个人访问令牌已过期、绑定的账号没有目标仓库的推送权限、任务配置时选错了对应仓库的凭证,都会导致鉴权不通过。
- 私有仓库配置缺失:如果推送目标是自建的私有Docker仓库,没有在Jenkins所在节点的Docker daemon配置中添加私有仓库的信任配置(HTTP仓库需要加
insecure-registries参数,HTTPS证书不受信时也需要添加对应配置),Docker会默认把推送请求发往公网Docker Hub,匹配不到你要推的私有仓库资源,也会返回权限拒绝错误。
内容的提问来源于stack exchange,提问作者xmh
相关产品推荐
相关产品推荐

