带有随机日期的Docker容器

带有随机日期的Docker容器

我正在运行基于图像的容器linuxserver/radarr:3.0.0.3095-ls12
一旦我更新标签/版本,linuxserver/radarr:3.0.0.3807-ls24应用程序就会停止工作。

经过一番调试后,我注意到date此图像中的行为很奇怪:

$ docker run --rm --entrypoint "" linuxserver/radarr:3.0.0.3807-ls24 date
Fri 20 Feb 1970 03:17:15 AM UTC
$ docker run --rm --entrypoint "" linuxserver/radarr:3.0.0.3807-ls24 date
Sun 01 Mar 1970 09:09:15 AM UTC
$ docker run --rm --entrypoint "" linuxserver/radarr:3.0.0.3807-ls24 date
Thu 19 Feb 1970 09:04:59 AM UTC

但旧的却不是

$ docker run --rm --entrypoint "" linuxserver/radarr:3.0.0.3095-ls12 date
Sat 10 Oct 2020 12:15:09 AM UTC

经过一段时间的思考,我认为时钟里有某种奇怪的黑魔法,因此决定运行它以--privileged获得完整/原始访问权限

$ docker run --rm --entrypoint "" --privileged linuxserver/radarr:3.0.0.3807-ls24 date
Sat 10 Oct 2020 12:16:22 AM UTC

而且它运行良好(应用程序也是如此,但对于问题来说并不重要)。

我查看了docker history这两张图片,但很多COPY时候,RUN curl不同的版本可能会有不同的结果。不过,我认为没有人(图片维护者)会想篡改日期,所以这一定是他们无法控制的事情(没有libfaketime找到)……

这是一个多架构图像,这些结果来自 raspberry Pi(因此是图像的 arm 构建)。在我的 amd64 linux 笔记本电脑中,date即使没有特权,最新的图像也能报告正确...

这可能是什么?我无法使用该--privileged标志,我该如何开始调试?

答案1

跟进阿德里安的评论(应该是一个答案):

根据linuxserver 常见问题这是一个已知问题自 2020 年 3 月起使用 docker 和 ubuntu focal 镜像。

它似乎与过时的 libseccomp(除了内核本身之外,Docker 的唯一依赖项)有关,这解释了为什么privileged容器不受影响(系统调用过滤已禁用)。

他们列出了可能的解决步骤。
就我而言(作为 OP),我使用的是 Buster,因此从 buster-backports 安装最新的 libseccomp 解决了这个问题

 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138
 echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list
 sudo apt update
 sudo apt install -t buster-backports libseccomp2

相关内容