存储库未在 docker build 中登录
Posted
技术标签:
【中文标题】存储库未在 docker build 中登录【英文标题】:Repository is not signed in docker build 【发布时间】:2020-03-27 02:20:18 【问题描述】:我有以下使用从 dockerhub 提取的最新 Ubuntu 映像的 Dockerfile:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y g++ llvm lcov
当我启动 docker build 命令时,出现以下错误:
Err:2 http://archive.ubuntu.com/ubuntu 仿生 InRelease 至少遇到一个无效签名。
Err:1 http://security.ubuntu.com/ubuntu bionic-security InRelease 至少遇到一个无效签名。
Err:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease 至少遇到一个无效签名。
Err:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease 至少遇到一个无效签名。
正在读取包列表...
W:GPG 错误:http://archive.ubuntu.com/ubuntu 仿生 InRelease:遇到至少一个无效签名。 E: 存储库“http://archive.ubuntu.com/ubuntubionic InRelease”未签名。
W:GPG 错误:http://security.ubuntu.com/ubuntu bionic-security InRelease:遇到至少一个无效签名。 E:存储库“http://security.ubuntu.com/ubuntubionic-security InRelease”未签名。
W:GPG 错误:http://archive.ubuntu.com/ubuntubionic-updates InRelease:遇到至少一个无效签名。 E:存储库“http://archive.ubuntu.com/ubuntubionic-updates InRelease”未签名。
W:GPG 错误:http://archive.ubuntu.com/ubuntubionic-backports InRelease:遇到至少一个无效签名。 E:存储库“http://archive.ubuntu.com/ubuntubionic-backports InRelease”未签名。
我在这里读到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 相同的错误
【问题讨论】:
你在代理后面工作吗? @7_R3X 不,一点也不 除了latest
,你试过ubuntu:18.04
吗?
是的,我试过 19.04, 19.10
我尝试提取更新的图像,它对我有用。看起来像图像中的一些错误
【参考方案1】:
显然我的根分区已满(可能我尝试过多次通过 apt 下载软件包),运行 sudo apt clean
解决了问题
【讨论】:
使用docker image prune
和 docker container prune
为我解决了这个问题。
docker image prune
在我的磁盘上节省了 52GB,让我的构建再次运行,谢谢 Antonio 和 Erik!
有人能解释为什么会发生这种故障吗?这挑战了我对 docker 的理解:在运行之间似乎有一些状态不能使运行具有确定性。
我尝试了以上所有方法,但在对 docker build 缓存进行核对后,我的问题得到了解决。起初,我通过docker system df
查看了我的 docker 使用情况。这告诉我我的构建缓存是 50+GB。然后我使用docker builder prune
对其进行了核对。
太棒了...这是解决方案,我盯着所有东西看,但没有意识到我的根分区空间不足。【参考方案2】:
自 Docker API v1.25+(发布时间:2019 年 11 月 18 日)
运行下面的命令为我解决了这个问题:
docker system prune --force
--force
标志代表非交互式修剪。
此外,您可能想尝试一下 prune volume 命令:
docker volume prune --force
【讨论】:
docker system prune
对我来说还不够。我还需要删除图像并运行docker volume prune
来解决问题。
感谢@JonasEicher,我已将您的案例纳入答案【参考方案3】:
修复
docker image prune -f
看起来 docker 对主机系统上的最大 apt 缓存大小有限制
【讨论】:
我还需要运行 docker volume rm $(docker volume ls -q)。【参考方案4】:对于 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
这解决了我的问题。
原帖是here。
【讨论】:
是的,就是这样!这似乎只适用于 armhf-Raspberry OS。一切都在我的 64 位服务器上运行。【参考方案5】:如果您使用的是 Docker Desktop,请注意您在设置中指定的最大磁盘映像大小。如果它在构建过程中被填满,可能会导致问题。
【讨论】:
谢谢 --- 这(增加磁盘映像大小资源)和修剪我的系统在 Docker/Mac 上为我解决了这个问题。 谢谢!为我工作。奇怪的是 apt-get 并不清楚这个问题。【参考方案6】:正如@Danila 和@Andriy 指出的那样,这个问题可以很容易地在运行中修复:
docker image prune -f
docker container prune -f
但是发布这个答案,因为只运行其中一个对我不起作用(在 MacOS X 上) - 但同时运行两个都可以。
【讨论】:
【参考方案7】:这对我有帮助:
docker volume prune
【讨论】:
【参考方案8】:我在我的两台机器中的一台上遇到了这个问题。做一个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://***.com/a/62088961/7387935
这里的关键点是,在正常工作的机器上,我将 aufs 作为存储驱动程序,而在故障机器上,它是 overlay2。在我更改之后,所有权限都是正确的。
【讨论】:
这个对我有用。我已将 tmp 文件夹移动到另一个驱动器并在根文件夹中放置了一个 simlink。这开始产生签名问题和许多其他错误。我按照你在这里的解释做了,但后来我将 tmp 文件夹移回根目录并删除了 simlink。我可能会将 tmp 文件夹留在它应该保留的位置。【参考方案9】:我后来又试了一次,它成功了。
来自https://github.com/docker-library/php/issues/898#issuecomment-539234070:
这通常意味着镜子有问题(可能部分出 日期;即未与其他镜像完全同步)并且经常 清理自己。
【讨论】:
【参考方案10】:我必须使用--security-opt seccomp:unconfined
运行容器。
【讨论】:
【参考方案11】:我删除了很多图片,然后它解决了我的问题。
【讨论】:
以上是关于存储库未在 docker build 中登录的主要内容,如果未能解决你的问题,请参考以下文章
React 测试库未在快照中显示输入 onChange 道具
Android Tensorflow Lite C++ .SO 库未在运行时链接