我有以下 Dockerfile,它使用从 dockerhub 中提取的最新 Ubuntu 映像:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y g++ llvm lcov
当我启动 docker build 命令时,出现以下错误:
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
解决了这个问题
此外,以下命令应该有助于清理空间:
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 system prune --force
--force
标志代表非交互式修剪。
此外,您可能想尝试 prun volume 命令:
docker volume prune --force
由
固定docker image prune -f
看起来 docker 对主机系统上的最大 apt 缓存大小有限制
如果您使用的是 Docker Desktop,请注意您在设置中指定的最大磁盘映像大小。如果它在构建过程中变满(source),它可能会导致问题。
对于 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
这解决了我的问题。
原帖在这里.
正如@Danila 和@Andriy 所指出的,这个问题很容易在运行时得到解决:
docker image prune -f
docker container prune -f
但是发布这个答案,因为只运行其中一个对我不起作用(在 MacOS X 上)——但是同时运行两个。
这对我有帮助:
docker volume prune
我不得不用
--security-opt seccomp:unconfined
运行容器。
我的两台机器中的一台遇到了这个问题。做一个
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
之后,它成功了!!
编辑:
所以,我更深入地研究了这个问题,并意识到存在根本性的错误。我把我的问题放在另一个问题中,后来找到了自己解决这个问题的答案:https://stackoverflow.com/a/62088961/7387935
这里的关键点是,在正常工作的机器上,我有 aufs 作为存储驱动程序,而在有故障的机器上,它是 overlay2。我更改后,所有权限都是正确的。
我后来又试了一次,成功了。
来自https://github.com/docker-library/php/issues/898#issuecomment-539234070:
这通常意味着镜子有问题(可能部分出 日期;即不完全与其他镜像同步)并且经常 清理自己。
谢谢,我确认它对我有用。我运行了这些命令,这解决了问题。再次拉取图像。
docker volume prune
docker system df
docker builder prune
docker image prune
docker system df
我能够通过停止所有正在运行的容器(在我的例子中是 2 个)来解决这个问题。
现有的答案都是通过
docker container prune
,docker image prune
和docker volume prune
删除现有的Docker项目来为Docker创造更多空间。或者,也可以增加 Docker 为它自己设置的磁盘限制(前提是你有足够的磁盘空间)。
在 Docker Desktop 中转到 Settings > Resources 并增加“Virtual disk limit”。
这对我很有帮助,因为我使用了几个大型 docker 镜像并且不想每次都为修剪而烦恼。
我在构建命令中添加了
--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
并查看您的其中一个卷是否需要可用空间