我正在尝试构建 Raspberry Pi docker 镜像,但总是遇到相同的错误,类似于这个,这个和这个。
apt update
当我以 root 身份运行该命令arm32v7/ubuntu:20.04
(或者只是ubuntu:latest
)时,我得到以下输出:
root@273d63597ce6:/# apt update
Get:1 http://ports.ubuntu.com/ubuntu-ports focal InRelease [265 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease [111 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease [98.3 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease [107 kB]
Err:1 http://ports.ubuntu.com/ubuntu-ports focal InRelease
At least one invalid signature was encountered.
Err:2 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease
At least one invalid signature was encountered.
Err:3 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease
At least one invalid signature was encountered.
Err:4 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease
At least one invalid signature was encountered.
Reading package lists... Done
W: GPG error: http://ports.ubuntu.com/ubuntu-ports focal InRelease: At least one invalid signature was encountered.
E: The repository 'http://ports.ubuntu.com/ubuntu-ports focal InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease: At least one invalid signature was encountered.
E: The repository 'http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease: At least one invalid signature was encountered.
E: The repository 'http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://ports.ubuntu.com/ubuntu-ports focal-security InRelease: At least one invalid signature was encountered.
E: The repository 'http://ports.ubuntu.com/ubuntu-ports focal-security InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
我尝试了建议的解决方案,清理 apt、清理 docker 和删除/重新创建,/var/lib/apt/lists
但没有成功。 SD 卡为 32G,操作系统是全新安装的。df
显示有 26G 可用。
更多信息:
- 这是在 raspberry pi 4 B 上全新安装 2020-05-27-raspios-buster-lite-armhf 时发生的
- 同样的错误发生在另一台运行 HypriotOS 的 Raspberry Pi 4 B 上
- 同一张图片中的相同命令在安装了 Arch Linux 的 Raspberry Pi 3 B 上运行良好
ubuntu:18.04
如果我使用旧版本的 ubuntu ( ,16.04
,14.04
),则不会发生此错误
答案1
问题的根源在 libseccomp 中。较新的版本修复了这个问题,但它还没有在 Debian 的稳定存储库中提供。有两种方法可以解决这个问题:
方法 1
使用 启动容器--privileged
。这会绕过docker的安全措施,所以不推荐使用。或者使用--security-opt seccomp:unconfined
更安全一点。
docker run -it --security-opt seccomp:unconfined ubuntu:latest
方法 2
在主机系统上手动升级 libseccomp。从不稳定的存储库下载版本(我使用 2.4.3-1 进行了测试)这里。
安装新版本:
sudo dpkg -i libseccomp2_2.4.3-1+b1_armhf.deb
注意:上述方法解决了基于 Raspbian 的系统的问题。该错误也发生在 Ubuntu 20.04 aarch64 系统上,@NeonLines 的回答对此有所帮助。
答案2
至少遇到一个无效签名
该错误表明其中一个文件/var/lib/apt/lists
至少包含一个无效/损坏的签名(可能是由于apt-key
误用或其他原因造成的)。
尝试使用调试消息运行 Apt update:
apt-get -oDebug::pkgAcquire::Worker=1 update
它应该指向损坏的文件,例如
0% [工作中] <- gpgv:400%20URI%20Failure%0aMessage:%20At%20least%20one%20invalid%20signature%20was%20encountered.%0aURI:%20gpgv:/var/lib/apt/lists/partial/CorruptedFile_InRelease
编辑文件,查找并删除损坏的部分,或删除整个文件,以便重新创建。
答案3
升级到 docker 版本 19.03.12 已经为我解决了这个问题。
答案4
TSpark、HyperCreeks 和 ibster1st123s 的答案确实对我在 Rasbian 10 和官方存储库中的最新 docker 版本有用。正如 NeonLines 指出的那样,您必须安装最新版本,因为它们不会遇到此问题。
大多数用户设置 Docker 的存储库并从中安装,以方便安装和升级任务。这是推荐的方法,Raspbian 除外。[…] 对于 Raspbian,尚不支持使用存储库进行安装。您必须改为使用便利脚本。 –docs.docker.com
总结
使用便捷脚本获取最新的 docker 版本。不过你应该检查一下上面的链接,有一些注意事项。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh