存储库未在 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 prunedocker 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 道具

C ++静态库未在mac上的xcode中编译[重复]

Android Tensorflow Lite C++ .SO 库未在运行时链接

[xamarin][uwp][custom renderer] 自定义渲染器 pcl 库未在发布模式下加载

部署原型工件时,Nexus Maven 原型存储库未更新

Angularjs - 未在 Safari 中添加授权标头