构建服务器是 Ubuntu 16.04,最近用sudo apt update && sudo apt upgrade
.
docker version
说:
Version: 18.06.0-ce
API version: 1.38
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:11:02 2018
OS/Arch: linux/amd64
Experimental: false
Dockerfile 看起来像这样:
FROM debian:12-slim
RUN apt-get update \
&& apt-get install -y wget \
&& apt-get install -y supervisor \
&& apt-get install -y apt-utils \
&& apt-get install -y nginx \
&& apt-get install -y libgdiplus
RUN apt-get autoremove -y \
&& apt-get clean -y \
&& apt-get autoclean -y \
&& rm -rf /var/lib/apt/lists/*
# .. other stuff cut ..
该apt-get update
步骤失败并显示:
W: GPG error: http://deb.debian.org/debian bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 648ACFD622F3D138 NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY F8D2585B8783D481
E: The repository 'http://deb.debian.org/debian bookworm InRelease' is not signed.
W: GPG error: http://deb.debian.org/debian bookworm-updates InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY 6ED0E7B82643E131
E: The repository 'http://deb.debian.org/debian bookworm-updates InRelease' is not signed.
W: GPG error: http://deb.debian.org/debian-security bookworm-security InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 54404762BBB6E853 NO_PUBKEY BDE6D2B9216EC7A8
E: The repository 'http://deb.debian.org/debian-security bookworm-security InRelease' is not signed.
想必我需要首先RUN
更新公钥。
我可以找到很多指南来手动解决这个问题,方法是将丢失的密钥复制粘贴到命令行中,但显然我需要将修复程序作为 Dockerfile 的一部分(如果可能的话,如果密钥发生更改,理想情况下不会失败? )。
apt-get
但也许官方基础镜像不起作用这一事实表明了更深层次的问题?
我是否为最小 Debian Docker 镜像使用了正确的标签?
该问题是否与使用 Debian slim 发行版有关?
这可能是构建环境或旧 Docker 版本的问题吗?
有什么想法吗?
(背景:本意是为旧版应用程序构建 .Net Core 2.1 运行时映像,但微软官方运行时映像不再受支持,并且最近出现了自己的问题,失败并出现许多 404 错误。选择 Debian apt-get
slim这是因为该图像基于同一图像的旧版本。)
编辑:评论似乎表明问题可能出在环境上;当使用 Docker 24.0.4 在 Ubuntu 22.04.2 上构建相同的 Dockerfile 时,一切都很好。问题回答为:不要使用过时的构建服务器!
根本原因是过时的内容
libseccomp
阻止了 Debian Bookworm 使用的新 Linux 系统调用。有以下三种方法:libseccomp
debian:11-slim
--security-opt seccomp=unconfined
(显然不安全的方法)