构建以下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.
任何形式的帮助将不胜感激。
7条答案
按热度按时间muk1a3rh1#
这是docker / seccomp / glibc交互中的一个bug:https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1916485
wbrvyc0a2#
我运行了你的docker文件,得到了同样的错误。玩弄各种方法来禁用验证也没有产生好的结果。删除版本限制和只安装最新版本的工具也没有用。我能找到的唯一解决方案是将ubuntu降级到20.04,但该操作系统没有3.6.3-5版本的maven,只有3.6.3-1(afaik)。
我能得到的最接近的工作与你想要的形象大不相同:
还要注意我是如何使用
apt
而不是apt-get
的,我只运行一次(这使得只有一个层的图像更简单),只运行一个apt update
,并将我想要安装的东西链接到一个apt install
中,而不是单独的。这样更快更简单然而,如果你想要一个maven构建盒,也许你最好使用来自docker hub的预构建maven镜像之一,这些镜像本身就基于openjdk镜像。对于java来说,底层的Linux发行版并不重要,而openjdk镜像则受到了很好的尊重:
3wabscal3#
如果使用较新版本的Docker(使用20.10测试),则不会发生此错误。如果使用旧版本的Docker,我建议切换到以前版本的Ubuntu镜像。我用Docker 19.03测试了ubuntu:20.10,它运行得很好。这里讨论:https://bugs.launchpad.net/cloud-images/+bug/1928218
avwztpqn4#
更新Docker版本到最新版本以解决此问题。
对于ubuntu用户,请按照以下步骤操作:
对于其他人,请参考此链接:https://docs.docker.com/engine/install/
ncecgwcz5#
我在chroot(SD卡)中运行apt时遇到了这个问题,其中/dev/null不存在。通过绑定挂载/sys/ /proc/ /dev/ /dev/pts修复
无论如何,systemd-nspawn是一个更简单的解决方案
3lxsmp7m6#
当我在Rootless Docker下运行Ubuntu 21.04镜像时,我遇到了这个问题,但是
apt-get update
命令在系统Docker下工作得很好(通过sudo
调用)。由于我需要的只是对环境设置脚本进行手动测试,所以我只是在系统Docker下运行,但根据您的应用程序,这可能不安全。ltqd579y7#
用
apt
替换apt-get
对我来说很有效。