存储库未在 docker 构建中签名

Repository is not signed in docker build

我有以下 Dockerfile,它使用从 dockerhub 中提取的最新 Ubuntu 图像:

FROM ubuntu:latest  
RUN apt-get update  && apt-get install -y  g++ llvm lcov 

当我启动 docker 构建命令时,出现以下错误:

Err:2 http://archive.ubuntu.com/ubuntu bionic InRelease At least one invalid signature was encountered.

Err:1 http://security.ubuntu.com/ubuntu bionic-security InRelease At least one invalid signature was encountered.

Err:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease At least one invalid signature was encountered.

Err:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease At least one invalid signature was encountered.

Reading package lists...

W: GPG error: http://archive.ubuntu.com/ubuntu bionic InRelease: At least one invalid signature was encountered. E: The repository 'http://archive.ubuntu.com/ubuntu bionic InRelease' is not signed.

W: GPG error: http://security.ubuntu.com/ubuntu bionic-security InRelease: At least one invalid signature was encountered. E: The repository 'http://security.ubuntu.com/ubuntu bionic-security InRelease' is not signed.

W: GPG error: http://archive.ubuntu.com/ubuntu bionic-updates InRelease: At least one invalid signature was encountered. E: The repository 'http://archive.ubuntu.com/ubuntu bionic-updates InRelease' is not signed.

W: GPG error: http://archive.ubuntu.com/ubuntu bionic-backports InRelease: At least one invalid signature was encountered. E: The repository 'http://archive.ubuntu.com/ubuntu bionic-backports InRelease' is not signed.

我在这里 https://superuser.com/questions/1331936/how-can-i-get-past-a-repository-is-not-signed-message-when-attempting-to-upgr 读到您可以使用 --allow-unauthenitcated 或 --allow-insecure-repositories 传递此错误,但在我看来这两种解决方法都可能危及容器的安全性。

编辑

试图拉取 ubuntu:18.04、ubuntu:19:04、ubuntu:19.10 不同发行版名称的相同错误

显然我的根分区已满(也许我尝试了太多次通过 apt 下载软件包),运行 sudo apt clean 解决了这个问题


此外,以下命令应该有助于清理 space:

docker system df # which can show disk usage and size of 'Build Cache'
docker image prune # add -f or --force to not prompt for confirmation
docker container prune # add -f or --force to not prompt for confirmation

修复
docker image prune -f

看起来 docker 对主机系统上的最大 apt 缓存大小有限制

我的两台机器中的一台遇到了这个问题。做了 ls -ld /tmp 我得到了

drwxrwxrwt 3 root root 4096 May 15 20:46 /tmp

工作的

drwxr-xr-t 1 root root 4096 May 26 05:44 /tmp

失败者。在我做了 chmod 1777 /tmp 之后,它成功了!!

编辑:

因此,我更深入地研究了这个问题,并意识到存在根本性的错误。我把我的问题放在另一个问题中,后来找到了自己解决这个问题的答案:

这里的关键点是,在正常工作的机器上,我有 aufs 作为存储驱动程序,而在有故障的机器上,它是 overlay2。我更改后,所有权限都是正确的。

自 Docker API v1.25+(发布日期:2019 年 11 月 18 日)

运行 下面的命令为我解决了这个问题:

docker system prune --force

--force 标志代表非交互式修剪。

此外,您可能想尝试 prun volume 命令:

docker volume prune --force

我后来又试了一次,成功了。

来自https://github.com/docker-library/php/issues/898#issuecomment-539234070

That usually means the mirror is having issues (possibly partially out of date; i.e. not completely synced from other mirrors) and often clears itself up.

正如@Danila 和@Andriy 所指出的,这个问题很容易解决 运行:

docker image prune -f
docker container prune -f

但是发布了这个答案,因为 运行 只有其中一个对我不起作用(在 MacOS X 上)- 运行 但是两者都有效.

如果您使用的是 Docker 桌面版,请注意您在设置中指定的最大磁盘映像大小。如果它在构建过程中变满,可能会导致问题。

对于 Raspbian,使用以下命令在主机系统上手动升级 libseccomp

curl http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.5.1-1_armhf.deb --output libseccomp2_2.5.1-1_armhf.deb
sudo dpkg -i libseccomp2_2.5.1-1_armhf.deb

这解决了我的问题。

原来的post是here

我不得不 运行 容器 --security-opt seccomp:unconfined

这对我有帮助:

 docker volume prune

我在构建命令中添加了 --network=host

docker build --network=host -t REPOSITORY:TAG  ./

这对我有用 docker system prune -af --volumes 还有这些其他的

docker image prune 
docker container prune
docker builder prune
docker volume prune

这 运行 docker system df 并查看您是否需要免费 space 您的其中一卷