Docker如何添加私有镜像仓库?拉取镜像报认证错误怎么办
报错根因说明
你遇到的unauthorized: unable to get identity token from basic auth credentials: invalid grant: invalid authentication credentials given报错核心是私有镜像仓库身份认证失败,常见触发场景包括:
- 本地存储的该仓库认证凭证已失效:比如供应商侧回收了你的账号拉取权限、凭证到期、账号密码被重置
- 本地存储的凭证本身错误,比如账号密码修改后没有更新Docker侧的存储记录
- 供应商侧调整了仓库访问策略,关闭了对应路径的匿名拉取权限
此前可正常拉取非Docker Hub镜像的原因
Docker本身不会限制只能拉取Docker Hub的镜像,之前能正常拉取一般是两种情况:
- 当时该仓库的
bmc/lpade路径开启了匿名访问权限,不需要认证即可拉取镜像 - 你之前执行过
docker login containers.XXX.com完成过该仓库的登录,有效凭证被保存在本地,拉取时Docker自动携带了认证信息,没有触发权限校验失败
Docker识别私有镜像仓库的逻辑
Docker解析镜像地址的规则是固定的,不需要提前“添加注册”私有仓库就能识别:
- 如果镜像名称没有带域名前缀,默认会将Docker Hub(docker.io)作为拉取源
- 如果镜像名称的第一段是带
.的域名格式字符串(比如你用的containers.XXX.com),Docker会自动将该段识别为私有仓库地址,直接拼接Registry V2接口路径发起拉取请求
20.10.15版本配置私有仓库、修复拉取报错的操作步骤
- 先向供应商确认你的账号对
bmc/lpade路径有拉取权限,拿到有效的用户名、密码 - 清理本地可能失效的旧凭证:编辑
~/.docker/config.json文件,删除auths字段下对应containers.XXX.com的配置段,保存退出 - 执行登录命令更新凭证:
docker login containers.XXX.com
按照提示输入正确的用户名、密码,提示登录成功即可
4. 如果该私有仓库使用自签名HTTPS证书,需要提前将仓库的CA证书放置到Docker的证书信任路径/etc/docker/certs.d/containers.XXX.com/ca.crt,执行systemctl restart docker重启服务后再尝试拉取
5. 如果仓库是HTTP非加密服务,需要编辑/etc/docker/daemon.json,将containers.XXX.com加入insecure-registries配置列表,重启Docker后再操作
内容的提问来源于stack exchange,提问作者fid740
相关产品推荐
相关产品推荐

