AWS Lightsail Ubuntu实例无法从ghcr.io拉取私有Docker镜像
以下是针对该问题的几种排查和解决方法:
- 检查Docker版本兼容性
Ubuntu 19默认的Docker版本可能偏旧,GHCR对客户端版本有最低要求(至少18.09)。先查看当前版本:
docker --version
如果版本不达标,执行以下命令升级Docker:
# 卸载旧版本组件 sudo apt-get remove docker docker-engine docker.io containerd runc # 添加Docker官方仓库 sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装最新版Docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
- 清理Docker认证缓存
登录成功后旧的认证缓存可能干扰拉取操作,直接移除认证配置文件后重新登录:
sudo rm -f ~/.docker/config.json echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
- 排查网络防火墙规则
确认Lightsail实例的UFW防火墙允许443端口出站:
# 临时关闭防火墙测试 sudo ufw disable
如果关闭后能正常拉取,再重新配置防火墙规则:
sudo ufw enable sudo ufw allow out 443/tcp
验证令牌与仓库权限
再次确认CR_PAT已勾选read:packages权限,且对应的用户拥有目标私有仓库的读取权限。使用完整镜像路径拉取
确保拉取命令里的组织名、仓库名、标签完全正确,执行完整路径的拉取命令:
docker pull ghcr.io/org_name/repo_name:latest
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

