Ubuntu 21.04在Docker构建期间第二次apt-get更新后出现GPG错误

bvuwiixz  于 2023-10-17  发布在  Docker
关注(0)|答案(7)|浏览(121)

构建以下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.

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

wbrvyc0a

wbrvyc0a2#

我运行了你的docker文件,得到了同样的错误。玩弄各种方法来禁用验证也没有产生好的结果。删除版本限制和只安装最新版本的工具也没有用。我能找到的唯一解决方案是将ubuntu降级到20.04,但该操作系统没有3.6.3-5版本的maven,只有3.6.3-1(afaik)。
我能得到的最接近的工作与你想要的形象大不相同:

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的预构建maven镜像之一,这些镜像本身就基于openjdk镜像。对于java来说,底层的Linux发行版并不重要,而openjdk镜像则受到了很好的尊重:

from maven:3.6.3-jdk-11
run apt update && apt install -y curl unzip && apt clean
3wabscal

3wabscal3#

如果使用较新版本的Docker(使用20.10测试),则不会发生此错误。如果使用旧版本的Docker,我建议切换到以前版本的Ubuntu镜像。我用Docker 19.03测试了ubuntu:20.10,它运行得很好。这里讨论:https://bugs.launchpad.net/cloud-images/+bug/1928218

avwztpqn

avwztpqn4#

更新Docker版本到最新版本以解决此问题。
对于ubuntu用户,请按照以下步骤操作:

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

sudo sh get-docker.sh

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

ncecgwcz

ncecgwcz5#

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

3lxsmp7m

3lxsmp7m6#

当我在Rootless Docker下运行Ubuntu 21.04镜像时,我遇到了这个问题,但是apt-get update命令在系统Docker下工作得很好(通过sudo调用)。由于我需要的只是对环境设置脚本进行手动测试,所以我只是在系统Docker下运行,但根据您的应用程序,这可能不安全。

ltqd579y

ltqd579y7#

apt替换apt-get对我来说很有效。

相关问题