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

Docker构建时add-apt-repository报错“keyserver receive failed: No name”求助

解决公司代理环境下add-apt-repository密钥获取失败的问题

我之前在公司代理环境里构建Docker镜像时,也碰到过和你完全一样的问题!结合我的踩坑经验,给你几个亲测有效的解决思路:

1. 给APT单独配置代理

系统层面的HTTP_PROXY环境变量有时候不会被APT工具(包括add-apt-repository和apt-key)识别到,所以需要单独给APT设置代理:

  • 创建APT代理配置文件:
    echo 'Acquire::http::Proxy "http://10.xxx.y.zzz:3128/";' > /etc/apt/apt.conf.d/95proxies
    echo 'Acquire::https::Proxy "http://10.xxx.y.zzz:3128/";' >> /etc/apt/apt.conf.d/95proxies
    
  • 配置完成后,再重新尝试执行add-apt-repository ppa:ubuntugis/ppa,大概率能解决密钥获取的问题。

2. 手动导入PPA密钥(绕过密钥服务器)

如果代理拦截了密钥服务器的HKP协议请求(默认11371端口,很多公司代理会封禁),可以手动导入密钥:

  1. 在能访问外网的机器上导出密钥:
    gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 226213AA
    gpg --export --armor 226213AA > ubuntugis.key
    
  2. 将密钥文件复制到Docker容器内(可以用docker cp命令,或者在Dockerfile里ADD/COPY)
  3. 在容器内导入密钥:
    apt-key add ubuntugis.key
    
  4. 直接添加PPA源到sources.list(不用add-apt-repository):
    # 先查看系统版本,比如focal、jammy
    UBUNTU_VERSION=$(lsb_release -cs)
    echo "deb http://ppa.launchpad.net/ubuntugis/ppa/ubuntu ${UBUNTU_VERSION} main" >> /etc/apt/sources.list
    echo "deb-src http://ppa.launchpad.net/ubuntugis/ppa/ubuntu ${UBUNTU_VERSION} main" >> /etc/apt/sources.list
    

3. 指定密钥服务器的HTTP端口

如果不想手动导密钥,试试给apt-key指定用80端口的密钥服务器(代理通常会放行80端口的请求):

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 226213AA

为什么之前的方法无效?

你之前尝试的密钥服务器请求失败,大概率是因为:

  • 公司代理封禁了密钥服务器默认的11371端口(HKP协议端口)
  • apt-key和add-apt-repository没有读取到系统的代理环境变量,导致请求没走代理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:00:01