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

Docker构建执行apt-key命令报错,求解决方案(Windows11 Pro环境)

Docker构建时apt-key收密钥失败的解决方法

问题场景

使用以下Dockerfile构建镜像时出现错误:

FROM osgeo/gdal:ubuntu-small-3.6.3

RUN apt-get install --no-install-recommends -y gnupg
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C

构建日志报错:

=> [internal] load build definition from Dockerfile                                                                                                         0.0s 
 => => transferring dockerfile: 1.13kB                                                                                                                       0.0s 
 => [internal] load .dockerignore                                                                                                                            0.0s 
 => => transferring context: 2B                                                                                                                              0.0s 
 => [internal] load metadata for docker.io/osgeo/gdal:ubuntu-small-3.6.3                                                                                     4.8s 
 => [auth] osgeo/gdal:pull token for registry-1.docker.io                                                                                                    0.0s 
 => [ 1/13] FROM docker.io/osgeo/gdal:ubuntu-small-3.6.3@sha256:398d5aca0ca88295c13ada87e0f382ed409dac13a952461187be72ce3c376513                             0.0s 
 => [internal] load build context                                                                                                                            0.1s 
 => => transferring context: 106.80kB                                                                                                                        0.0s 
 => CACHED [ 2/13] RUN apt-get install --no-install-recommends -y gnupg                                                                                      0.0s 
 => ERROR [ 3/13] RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C 
------
> [ 3/13] RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C:
#7 0.565 Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
#7 0.586 Executing: /tmp/apt-key-gpghome.sBrxtWnhQq/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C
#7 10.62 gpg: keyserver receive failed: Server indicated a failure
------
executor failed running [/bin/sh -c apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C]: exit code: 2

环境:Windows 11 Pro

解决办法

1. 更换密钥服务器

keyserver.ubuntu.com存在访问不稳定的情况,换成其他可靠的密钥服务器即可,比如MIT的服务器:

RUN gpg --keyserver hkp://pgp.mit.edu --recv-keys 871920D1991BC93C

也可以尝试hkp://keys.openpgp.org,这两个都是常用的公共密钥服务器。

2. 弃用apt-key,改用标准密钥存储方式

apt-key已经被官方弃用,正确的做法是将密钥导出到/usr/share/keyrings/目录下的密钥环文件,后续添加源时直接引用该文件。修改后的Dockerfile:

FROM osgeo/gdal:ubuntu-small-3.6.3

RUN apt-get update && apt-get install --no-install-recommends -y gnupg
RUN gpg --keyserver hkp://pgp.mit.edu --recv-keys 871920D1991BC93C \
    && gpg --export 871920D1991BC93C > /usr/share/keyrings/custom-archive-keyring.gpg

如果之后需要添加第三方软件源,要这样配置:

RUN echo "deb [signed-by=/usr/share/keyrings/custom-archive-keyring.gpg] 你的源地址 发行版代号 main" > /etc/apt/sources.list.d/custom.list

3. 检查Docker代理设置

如果Windows系统使用了代理,务必确保Docker Desktop的代理配置正确。打开Docker Desktop的设置,进入Resources -> Proxies,勾选"Manual proxy configuration",填入和系统一致的代理地址和端口,避免构建时网络请求被拦截。

4. 手动下载密钥再导入镜像

如果所有密钥服务器都无法访问,可以在本地提前下载密钥:

# 在Windows终端执行(需要安装gpg工具,可通过Chocolatey或WSL安装)
gpg --keyserver hkp://pgp.mit.edu --recv-keys 871920D1991BC93C
gpg --export 871920D1991BC93C > key.gpg

然后修改Dockerfile,把本地的密钥文件复制到镜像中:

FROM osgeo/gdal:ubuntu-small-3.6.3

RUN apt-get update && apt-get install --no-install-recommends -y gnupg
COPY key.gpg /usr/share/keyrings/custom-archive-keyring.gpg

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:05:44