【问题标题】:Atleast one invalid signature was encountered遇到至少一个无效签名
【发布时间】:2020-10-09 22:11:01
【问题描述】:

我正在尝试使用 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

我在尝试构建负载生成器时收到这些错误。 我该如何解决这个问题?

【问题讨论】:

    标签: docker kubernetes minikube skaffold


    【解决方案1】:

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

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

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

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

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

    如果有帮助,请告诉我。

    【讨论】:

    • 您好,三种方法都试过了,还是不行,请问还有什么办法吗?谢谢!
    • @SaranyaGupta 你用sudo 试过了吗?它是否打印相同的错误?
    • 磁盘空间不足导致(通过 docker 修剪修复)。
    • 对我来说,docker image prune -f 就足够了!
    • docker system prune 为我工作。有 20 GB 的构建缓存。
    【解决方案2】:

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

    docker system prune
    

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

    docker system df
    

    更新:

    上述命令将清除整个 Docker 系统。如果您只想清除构建缓存,可以使用以下命令来完成(感谢saraf.gahl):

    docker builder prune
    

    【讨论】:

    • 谢谢!这是一个指向正确方向的指针。请注意,您也可以直接清除构建缓存 - docker builder prune。 :)
    • 为此效果添加了注释。谢谢!
    • docker builder prune 非常适合我
    【解决方案3】:

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

    $ docker image prune 
    $ docker container prune 
    

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

    $ docker image prune -a 
    

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

    $ docker image prune -a --filter "until=24h"
    

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

    【讨论】:

    • 这适用于我在 minikube 系统下
    【解决方案4】:

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

    # 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
    

    【讨论】:

    • 这个。天哪,你是怎么想出来的。
    • 将 pi 内核升级到 buster,升级到 docker-ce 并使用 qemu 从 debootstrap 构建我自己的映像,请参阅下面的评论。
    • 非常感谢!同样的问题,例如balenalib/raspberry-pi-node。使用debian:buster,我现在可以构建我的 Dockerfile 而不会出现任何错误。
    • 非常感谢!尝试为覆盆子 pi 构建 docker 镜像时遇到同样的问题,该镜像使用某个以靶心为基础的标签的最新镜像,切换到 buster 解决了该问题。
    【解决方案5】:

    这些都不适合我。这个命令虽然成功了:

    docker volume prune
    

    实际上我可以回收 249GB 的卷。

    【讨论】:

    • 这对我有用!
    【解决方案6】:

    我尝试了上述几个答案,但没有一个对我有用。真正的触发因素是当我使用来自@Wytrzymały Wiktoranswer--allow-unauthenticated--allow-insecure-repositories 时,我收到了一条显示通知

    tar: ./conffiles: Cannot utime: Operation not permitted
    tar: ./control: Cannot utime: Operation not permitted
    tar: ./md5sums: Cannot utime: Operation not permitted
    tar: ./postinst: Cannot utime: Operation not permitted
    tar: .: Cannot utime: Operation not permitted
    tar: Exiting with failure status due to previous errors
    

    这让我找到了this post,这表明问题可能出在 libseccomp2 已过时。

    需要解决的问题:

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

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

    【讨论】:

    • 谢谢,为我解决了这个问题。 ( php:8.0-apache-bullseye 容器在 raspbian docker 环境中)
    • 非常感谢,这也是我的 Raspberry Pi 上的问题。应该有更多的赞成票。
    【解决方案7】:

    @Jack Kawell 说对了。

    docker builder prune
    

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

    【讨论】:

      【解决方案8】:

      我遇到了同样的问题。看来是空间不足了。我已经删除了旧图像,它开始工作了。

      $ docker images

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

      $ docker rmi <image_id>

      【讨论】:

        【解决方案9】:

        在 x64 中制作自己的 sid 映像

        # variables
        $WORKPLACE=/space_change_me
        $BASEIMG=debian:buster
        $TAG=my/debian
        $RELEASE=sid
        $PLATFORM=arm
        
        # multiarch preparation
        apt-get update
        apt-get -y install apt-transport-https ca-certificates curl gnupg lsb-release
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
        echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
        apt-get update
        apt-get -y install qemu binfmt-support qemu-user-static docker-ce byobu make
        export DOCKER_CLI_EXPERIMENTAL=enabled
        
        #build image
        docker run  -i --rm -v $WORKPLACE:/data $BASEIMG /bin/bash  << EOF
        export DEBIAN_FRONTEND="noninteractive" 
        apt-get -y update
        apt-get -y install debootstrap
        debootstrap --verbose --include=iputils-ping --arch $PLATFORM $RELEASE /data/$RELEASE-$PLATFORM $REPO
        chroot /data/$RELEASE-$PLATFORM/ /bin/bash << SEOF 
        export DEBIAN_FRONTEND="noninteractive"
        apt-get -y update
        apt-get -y upgrade
        apt-get -y clean
        SEOF
        rm -R /data/$RELEASE-$PLATFORM/debootstrap
        EOF
        
        cd $WORKPLACE/$RELEASE-$PLATFORM
        tar cpf - . | docker import - $TAG:$RELEASE-$PLATFORM --platform $PLATFORM
        docker save $TAG:$RELEASE-$PLATFORM  > debian-$RELEASE-$PLATFORM.tar
        

        您可以稍后在 arm 主机中加载

        cat debian-$RELEASE-$PLATFORM.tar |docker load
        

        【讨论】:

          【解决方案10】:

          遇到至少一个无效签名

          该错误表明/var/lib/apt/lists 中的一个文件包含至少一个无效/损坏的签名(可能是apt-key 滥用或其他原因的结果)。

          尝试使用调试消息运行 Apt 更新:

          apt-get -oDebug::pkgAcquire::Worker=1 update
          

          这应该将您指向损坏的文件,例如

          0% [工作]

          编辑文件,查找并删除损坏的部分,或删除整个文件,以便重新创建。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-09
            • 1970-01-01
            • 2022-01-13
            • 2022-01-13
            • 2016-01-20
            • 1970-01-01
            • 2019-02-20
            相关资源
            最近更新 更多