Docker 构建期间第二次 apt-get 更新后 Ubuntu 21.04 出现 GPG 错误
GPG error in Ubuntu 21.04 after second apt-get update during Docker build
构建以下 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.
如有任何帮助,我们将不胜感激。
我已经 运行 你的 docker 文件并得到同样的错误。尝试各种禁用验证的方法也没有产生好的结果。也没有删除版本限制,只安装最新版本的工具。我能找到的唯一解决方案是将 ubuntu 降级到 20.04,但是 OS 的那个版本没有 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
这是 docker/seccomp/glibc 交互中的错误:https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1916485
如果使用较新版本的 Docker(使用 20.10 测试),则不会出现此错误。如果使用旧版本的 Docker,我建议切换到旧版本的 ubuntu 图像。我用 Docker 19.03 测试了 ubuntu:20.10,它工作得很好。此处讨论:https://bugs.launchpad.net/cloud-images/+bug/1928218
我 运行 在 运行 无根 Docker 下的 Ubuntu 21.04 图像时遇到了这个问题,但是 apt-get update
命令在 apt-get update
下工作正常系统 Docker(通过 sudo
调用)。由于我的需要只是对环境设置脚本进行手动测试,因此我只是 运行 在系统 Docker 下,但是,根据您的应用程序,这可能不安全。
用 apt
替换 apt-get
对我有用。
将 Docker 版本更新到最新版本以解决此问题。
对于 ubuntu 用户,请执行以下步骤:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
其他人请参考这个link:https://docs.docker.com/engine/install/
构建以下 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.
如有任何帮助,我们将不胜感激。
我已经 运行 你的 docker 文件并得到同样的错误。尝试各种禁用验证的方法也没有产生好的结果。也没有删除版本限制,只安装最新版本的工具。我能找到的唯一解决方案是将 ubuntu 降级到 20.04,但是 OS 的那个版本没有 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
这是 docker/seccomp/glibc 交互中的错误:https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1916485
如果使用较新版本的 Docker(使用 20.10 测试),则不会出现此错误。如果使用旧版本的 Docker,我建议切换到旧版本的 ubuntu 图像。我用 Docker 19.03 测试了 ubuntu:20.10,它工作得很好。此处讨论:https://bugs.launchpad.net/cloud-images/+bug/1928218
我 运行 在 运行 无根 Docker 下的 Ubuntu 21.04 图像时遇到了这个问题,但是 apt-get update
命令在 apt-get update
下工作正常系统 Docker(通过 sudo
调用)。由于我的需要只是对环境设置脚本进行手动测试,因此我只是 运行 在系统 Docker 下,但是,根据您的应用程序,这可能不安全。
用 apt
替换 apt-get
对我有用。
将 Docker 版本更新到最新版本以解决此问题。
对于 ubuntu 用户,请执行以下步骤:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
其他人请参考这个link:https://docs.docker.com/engine/install/