在Docker构建过程中,Ubuntu 21.04在第二次apt-get更新时出现GPG错误

37

构建以下Docker文件时出现错误

FROM ubuntu:21.04

RUN apt-get update && \
    apt-get install --no-install-recommends -y curl=7.\* && \
    apt-get install --no-install-recommends -y unzip=6.\* &&\ 
    rm -rf /var/lib/apt/lists/*

RUN apt-get update && \
    mkdir -p /usr/share/man/man1 && \
    apt-get install --no-install-recommends -y maven=3.6.3-5 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

第二个 apt-get update 运行时会出现错误。

错误信息如下:

E: The repository 'http://security.ubuntu.com/ubuntu hirsute-security InRelease' is not signed.
W: GPG error: http://archive.ubuntu.com/ubuntu hirsute InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
E: The repository 'http://archive.ubuntu.com/ubuntu hirsute InRelease' is not signed.
W: GPG error: http://archive.ubuntu.com/ubuntu hirsute-updates InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
E: The repository 'http://archive.ubuntu.com/ubuntu hirsute-updates InRelease' is not signed.
W: GPG error: http://archive.ubuntu.com/ubuntu hirsute-backports InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
E: The repository 'http://archive.ubuntu.com/ubuntu hirsute-backports InRelease' is not signed.

任何形式的帮助都将不胜感激。

1
确认--我使用那个Dockerfile也遇到了同样的错误,所以这不是针对你的特定情况。 - Software Engineer
我不知道这个 bug 是否已经被修复。几周前,我使用的是一个下载下来的 Ubuntu 21.04 镜像,也遇到了同样的问题。今晚我尝试清除重新下载 Ubuntu 镜像,问题已经解决了。 - mastupristi
7个回答

23

5
已在 runc 1.0.0-rc93 中修复。您可以通过 docker version 查看您的版本。 - Gregor Jasny
3
根据21.04版本说明所述:“由于glibc 2.33的更改,Ubuntu 21.04容器镜像需要更新容器运行时。所有在受支持的Ubuntu版本中使用的广泛容器运行时都已通过标准稳定版本更新程序进行更新。运行其他操作系统的容器主机可能需要手动更新。” - andrewdotn
1
我发现我必须完全卸载 Docker 并重新安装才能使其正常工作 - 遵循 https://askubuntu.com/questions/1230248/docker-problems-in-ubuntu-20-04 中的说明 - 当使用 Ubuntu 20.04 作为主机操作系统时。 - lewis
1
目前还没有办法在Dockerhub上使用那个修复方法,对吧? - staticdev
我正在运行基于ARM的容器。升级到runc 1.0.1版本已经为我的Arm64容器解决了这个问题,但对于Arm32容器没有起作用。请参见https://bugs.launchpad.net/ubuntu/+source/libseccomp/+bug/1916485/comments/59。 - Matt Thalman
显示剩余2条评论

4
我运行了你的Docker文件并遇到了相同的错误。尝试采用不同的方法禁用验证也没有产生好结果,移除版本限制只安装最新版本工具也不行。我能找到的唯一解决方案是降级Ubuntu到20.04版本,但这个操作系统版本下没有3.6.3-5版本的Maven,只有3.6.3-1(据我所知)。
最接近能够工作的与你期望的镜像相比相当不同。
FROM ubuntu:20.04

RUN apt update && \
    apt install --no-install-recommends -y curl=7.\* unzip=6.\* maven=3.6.3-1 && \
    apt clean && \
    rm -rf /var/lib/apt/lists/* && \
    mkdir -p /usr/share/man/man1

请注意我是如何使用apt而不是apt-get,只运行一次(这样可以使图像更简单,只有一个层),并且仅运行一次apt update,并将我想要安装的东西链接到一个单独的apt install中,而不是分开安装。这只是更快,更容易。
然而,如果您需要一个maven构建盒子,也许最好使用Docker Hub上那些基于openjdk镜像本身的预构建maven镜像。对于Java来说,底层的Linux发行版很少有关系,而openjdk镜像非常受尊重。
from maven:3.6.3-jdk-11
run apt update && apt install -y curl unzip && apt clean

1
谢谢,但是Ubuntu 20.04的问题在于它的安全分析失败了(我正在使用clair分析)。目前唯一的解决方案是使用Ubuntu版本20.10。 - Tanmaya
使用更新的发行版存在问题,因为漏洞通常还没有被发现,而不是它们不存在。我认为20.10版本仅在4个月前发布,所以它相对未经测试,这可能导致错误的负面结果。有时候最好修补并证明 - 并非所有漏洞在特定情况下都是有效的。 - Software Engineer

3

如果使用更新版本的Docker(已测试20.10),则不会出现此错误。如果使用旧版本的Docker,则建议切换到先前的ubuntu映像版本。我已经测试过ubuntu:20.10和Docker 19.03,结果是正常的。详情请参见:https://bugs.launchpad.net/cloud-images/+bug/1928218


谢谢,我从Docker 19.03.5升级到20.10.6后问题解决了 =) - Michael Schock
1
它对我来说没有解决问题(在Macintosh上的docker 20.10.0 build 7287ab3)。 - Mathieu Dutour Sikiric
升级到20.10.8并没有解决我的问题! - Sara Vaseei
这对我有用。 - Vijay Kumar

0

更新 Docker 版本到最新版本以解决此问题。

对于 Ubuntu 用户,请按照以下步骤操作:

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh

其他人请参考此链接: https://docs.docker.com/engine/install/


0
我在运行chroot(sd卡)中的apt时遇到了这个问题,/dev/null不存在。通过绑定挂载/sys/ /proc/ /dev/ /dev/pts来解决了这个问题。
不过,systemd-nspawn是一个更简单的解决方案。

-2
我在使用 Rootless Docker 运行 Ubuntu 21.04 镜像时遇到了这个问题,但是在通过 sudo 调用的系统 Docker 下,apt-get update 命令可以正常工作。因为我只是需要手动测试一个环境设置脚本,所以我只是在系统 Docker 下运行,但是根据你的应用程序,这可能不安全。

-3

apt-get替换为apt对我很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接