至少遇到一个无效签名

Sar*_*pta 43 docker kubernetes minikube skaffold

我正在尝试使用 minikube 构建微服务映像并将其部署到在我的开发机器上运行的单节点 Kubernetes 集群。我正在使用 Google 的云原生微服务演示应用程序 Online Boutique 来了解 Kubernetes、Istio 等技术的使用。

链接到 github 存储库:microservices-demo

在遵循安装过程并运行命令skaffold run来构建和部署我的应用程序时,我收到一些错误:

Step 10/11 : RUN apt-get -qq update     && apt-get install -y --no-install-recommends         curl
 ---> Running in 43d61232617c
W: GPG error: http://deb.debian.org/debian buster InRelease: At least one invalid signature was encountered.
E: The repository 'http://deb.debian.org/debian buster InRelease' is not signed.
W: GPG error: http://deb.debian.org/debian buster-updates InRelease: At least one invalid signature was encountered.
E: The repository 'http://deb.debian.org/debian buster-updates InRelease' is not signed.
W: GPG error: http://security.debian.org/debian-security buster/updates InRelease: At least one invalid signature was encountered.
E: The repository 'http://security.debian.org/debian-security buster/updates InRelease' is not signed.
failed to build: couldn't build "loadgenerator": unable to stream build output: The command '/bin/sh -c apt-get -qq update     && apt-get install -y --no-install-recommends         curl' returned a non-zero code: 100
Run Code Online (Sandbox Code Playgroud)

我在尝试构建 loadgenerator 时收到这些错误。我该如何解决这个问题?

OhH*_*ark 69

遇到这些错误的原因有几个:

  1. 现有缓存和/或磁盘空间可能存在问题。为了修复它,您需要通过执行:sudo apt-get clean和来清除 APT 缓存sudo apt-get update

  2. 现有的 docker 镜像也是如此。执行:docker image prune -fdocker container prune -f以删除未使用的数据和可用的磁盘空间。

  3. 如果你不关心安全风险,你可以尝试运行apt-get带有--allow-unauthenticated--allow-insecure-repositories标志的命令。根据文档

如果包无法通过身份验证,请忽略并且不提示。这在使用本地存储库时很有用,但如果用户本身无法以其他方式确保数据真实性,则会带来巨大的安全风险。

如果这有帮助,请告诉我。

  • “docker system prune”对我有用。有 20 GB 的构建缓存。 (33认同)
  • 由于磁盘空间不足引起(通过使用 docker 修剪修复)。 (10认同)
  • `docker-compose down -v --rmi all --remove-orphans` 为我解决了这个问题。 (5认同)
  • 有人可以解释为什么这个错误是由磁盘空间不足引起的吗?为什么当磁盘空间不足时 apt 会抛出这个无用的错误? (5认同)
  • 对我来说,“docker image prune -f”就足够了! (4认同)
  • 你好,三种方法都试过了,还是不行,请问还有什么办法吗?谢谢! (2认同)
  • `docker 图像 | awk '{print $3}' | xargs -I{} docker rmi -f {}` (2认同)

Jac*_*ell 45

我遇到了同样的问题,之前提到的修剪图像或容器的回复都没有奏效。原因是我的 Docker Build Cache 占用了大部分空间。运行以下命令修复了问题:

docker system prune
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过运行来检查它是否有效:

docker system df
Run Code Online (Sandbox Code Playgroud)

更新:

上述命令将清除整个 Docker 系统。如果只想清除构建缓存,可以使用以下命令(归功于saraf.gahl):

docker system prune
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!这是一个指向正确方向的指针。请注意,您还可以直接清除构建缓存 - `docker builder prune`。:) (3认同)

小智 37

@Jack Kawell 说得对。

docker builder prune
Run Code Online (Sandbox Code Playgroud)

这个命令就可以解决问题。请注意命令“ docker system prune ”,因为这会删除所有图像(非常具有破坏性)。构建器修剪仅删除构建缓存,该缓存是您之前所有(缓存的)构建步骤所在的位置。


Tia*_*ões 24

我有同样的问题。看来是空间不够了。我已经删除了旧图像并且它开始工作。

$ docker images

选择您不再关心的那些(删除)。

$ docker rmi <image_id>

以下命令过滤并删除悬挂图像。

docker rmi $(docker images -q --filter "dangling=true")


cer*_*zas 14

我通常看到这个的原因是因为 docker 已经用完了磁盘空间,这令人沮丧,因为错误几乎没有表明这是问题所在。首先尝试使用prune命令https://docs.docker.com/config/pruning/清理不需要的图像和容器。

$ docker image prune 
$ docker container prune 
Run Code Online (Sandbox Code Playgroud)

如果您积累了大量图像并希望删除所有与现有容器无关的图像,请尝试:

$ docker image prune -a 
Run Code Online (Sandbox Code Playgroud)

或者您可以仅删除旧图像:

$ docker image prune -a --filter "until=24h"
Run Code Online (Sandbox Code Playgroud)

最后,在 Docker 在专用 VM 内运行的 MacOS 上,您可能需要从 Docker 桌面应用程序(设置 -> 资源 -> 高级 -> 磁盘映像大小)增加可用于 Docker 的磁盘。


小智 12

这些都不适合我。不过这个命令确实达到了目的:

docker volume prune
Run Code Online (Sandbox Code Playgroud)

我可以回收价值 249GB 的卷。


Jon*_*Guy 11

我尝试了上面的一些答案,但没有一个对我有用。真正的触发因素是当我使用--allow-unauthenticated@Wytrzyma \xc5\x82y Wiktor \ 的回答--allow-insecure-repositories时,我收到一条通知

\n
tar: ./conffiles: Cannot utime: Operation not permitted\ntar: ./control: Cannot utime: Operation not permitted\ntar: ./md5sums: Cannot utime: Operation not permitted\ntar: ./postinst: Cannot utime: Operation not permitted\ntar: .: Cannot utime: Operation not permitted\ntar: Exiting with failure status due to previous errors\n
Run Code Online (Sandbox Code Playgroud)\n

这引导我找到了这篇文章,该文章表明问题可能出在 libseccomp2 已过时的地方。

\n

解决办法是:

\n
# Get signing keys to verify the new packages, otherwise they will not install\nsudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138\n\n# Add the Buster backport repository to apt sources.list\necho \'deb http://httpredir.debian.org/debian buster-backports main contrib non-free\' | sudo tee -a /etc/apt/sources.list.d/debian-backports.list\n\nsudo apt update ; sudo apt install libseccomp2 -t buster-backports\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,这假设您正在使用 Raspbian 和 19.04 之后的 docker 版本

\n


Jua*_*des 5

我认为这与 docker 官方镜像的某些 LSM 组件(在本例中为 armhf)和 exec/capabilities 权限有关。在这种简单的情况下,sid风味无法正确处理时间。这与证书检查有关,是签名无效的原因。它也发生在 ubuntu focus 中。

# docker run -it debian:buster /bin/date
Sun Nov 15 11:30:44 UTC 2020
# docker run -it debian:sid /bin/date 
Thu Jan  1 00:00:00 UTC 1970
Run Code Online (Sandbox Code Playgroud)

  • 这。天哪,你是怎么想出来的。 (2认同)
  • 将 pi 内核升级到 buster,升级到 docker-ce 并使用 qemu 从 debootstrap 构建我自己的映像,请参阅下面的评论。 (2认同)
  • 太感谢了!与例如“balenalib/raspberry-pi-node”相同的问题。使用 `debian:buster`,我现在可以构建我的 Dockerfile,不会出现任何错误。 (2认同)