Docker
帶有隨機日期的 Docker 容器
我正在執行一個基於 image 的容器
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
找到)……這是一個多架構圖像,這些結果來自樹莓派(因此圖像的 arm 建構)。在我的 amd64 linux 筆記型電腦中,
date
即使沒有特權,最新的圖像也能正確報告…會是什麼呢?由於無法使用該
--privileged
標誌,我什至如何開始調試它?
跟進Adrian的評論(這應該是一個答案):
根據linuxserver FAQ,這是2020 年 3 月以來 docker 和 ubuntu 焦點鏡像的一個已知問題。
它似乎與過時的 libseccomp(除了核心本身之外的唯一依賴項)有關,這解釋了為什麼
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