You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非root用户无法拉取私有GHCR镜像问题求助

解决非root用户拉取GHCR私有镜像提示unauthorized问题

针对你遇到的只有root能拉取GHCR私有镜像、其他用户登录成功但拉取失败的问题,给你几个排查和解决方向:

1. 检查用户Docker认证文件的权限

非root用户登录GHCR后,认证信息存在~/.docker/config.json文件中,如果这个文件的所有者或权限不正确,Docker daemon无法读取到有效认证:

  • 先查看文件权限:
    ls -l ~/.docker/config.json
    
  • 确保文件所有者是当前用户,权限为600(仅用户本人可读写),如果不对,执行:
    sudo chown $USER:$USER ~/.docker/config.json
    chmod 600 ~/.docker/config.json
    

2. 将用户加入docker用户组

默认情况下,非root用户需要通过sudo操作Docker,这可能导致用户的认证信息不被Docker daemon识别。把用户加入docker组,无需sudo即可操作Docker:

  • 执行添加组命令:
    sudo usermod -aG docker $USER
    
  • 注销当前用户再重新登录(或临时执行newgrp docker切换组)
  • 重新登录GHCR:
    echo "你的个人访问令牌(PAT)" | docker login ghcr.io -u 你的GitHub用户名 --password-stdin
    
  • 再次尝试拉取镜像

3. 确认GHCR登录用的是有权限的个人访问令牌(PAT)

注意:GitHub已经不再支持用账号密码登录GHCR,必须使用带有read:packages权限的个人访问令牌(PAT)。如果你之前用的是账号密码,即使显示登录成功,实际没有拉取私有镜像的权限:

  • 生成PAT时,勾选read:packages权限(如果需要推送还可以加write:packages)
  • 用这个PAT替换登录命令中的"xxx",重新登录后尝试拉取

4. 清理旧的认证缓存后重新登录

如果用户本地存在旧的无效认证信息,可能干扰新的登录:

  • 先注销GHCR:
    docker logout ghcr.io
    
  • 备份并删除旧的配置文件(可选):
    mv ~/.docker/config.json ~/.docker/config.json.bak
    
  • 重新执行登录命令,再尝试拉取镜像

5. 验证认证信息是否正确加载

登录后,检查Docker配置中是否包含GHCR的有效认证:

  • 执行命令查看认证信息:
    docker config inspect | grep -A5 ghcr.io
    
  • 如果能看到ghcr.io的auth条目,说明认证已正确加载,再尝试拉取镜像

内容的提问来源于stack exchange,提问作者Mervin Hemaraju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:19:53