集群环境使用Singularity无法登录私有Docker注册表问题求助
根因结论
你的代理配置是导致Singularity登录失败的直接原因。
逻辑验证
- 本地未使用集群代理的环境下Singularity可正常登录,排除GitLab注册表服务、Singularity操作逻辑本身的问题。
- 你在浏览器中看到的401未授权返回是Docker Registry v2接口的标准响应:该接口会先返回401状态码和
WWW-Authenticate请求头,引导客户端携带鉴权凭证重新发起请求,本身不属于异常。 - 集群配置的HTTP/HTTPS代理要么未开放对5000端口的访问权限,要么会自动剥离请求中的鉴权头信息,导致Singularity提交的凭证无法到达GitLab服务端,最终返回403 Forbidden报错。
解决方法
临时生效(仅当前终端会话)
执行登录命令前先添加GitLab域名的代理绕过规则:
export NO_PROXY=git.tu-berlin.de
再执行Singularity登录命令即可,用户名填写GitLab账号名,密码填写带有read_registry/write_registry权限的GitLab个人访问令牌:
singularity remote login docker://git.tu-berlin.de:5000
永久生效
将代理绕过规则追加到~/.bashrc文件:
echo 'export NO_PROXY=$NO_PROXY,git.tu-berlin.de' >> ~/.bashrc source ~/.bashrc
内容的提问来源于stack exchange,提问作者Florian Blume
相关产品推荐
相关产品推荐

