
即使清除 Docker 映像快取後也會發生此錯誤:
$ docker run -it --rm mariadb:10.8.3
2022-06-15 11:28:14+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.8.3+maria~jammy started.
2022-06-15 11:28:14+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config
command was: mariadbd --verbose --help --log-bin-index=/tmp/tmp.EUcxIEz4Yz
Can't initialize timers
latest
目前Docker Hub 上的映像像是 10.8.3 。圖像標籤是ea81af801379
.這是在 64 位元 Ubuntu 18.04 上。此伺服器具有較低的 CPU 負載、100+GB 的可用 RAM 和 TB 的可用磁碟空間。
我有一個現有的資料庫,該版本已經涉及該資料庫,我不想冒降級的風險。
我見過這個問題但 MariaDB 沒有理由無法創建執行緒。
我該如何解決這個問題?
答案1
解決方案是將MariaDB版本變更為避免version 10.8.3
,例如透過強製mariadb:10.8.2
或mariadb:10.7
或 來設置--security-opt seccomp=unconfined
如果您的 Dockerfile 或 docker-compose 正在引用mariadb:latest
或mariadb:10
in Summer 2022,則它指向mariadb:10.8.3
.
與 @Arno 的帖子相反,Docker 版本不是問題。我正在運行 Docker 20.10.17
,但問題仍然存在。
您也可以直接使用更新的安全性設定檔運行:
docker run --security-opt seccomp=/etc/docker/profiles-seccomp-scmp-act-trace.json
希望 MariaDB 版本中能夠修復該問題10.8.3
。
答案2
該問題已報告在 GitHub 上。升級 Docker 似乎可以解決這個問題。
答案3
latest
我在 Gitlab CI 上運行 MariaDB () 時遇到了同樣的問題測試容器對於Java。
使用seccomp=unconfined
安全選項 - 正如@Arno 連結的 Github 中所討論的那樣,為我解決了這個問題。
透過啟用此功能testcontainers-java
有點奇怪,因此如果讀者在測試包含中遇到相同的問題,則流程如下:
var container = new MariaDBContainer<>("mariadb:latest")
.withCreateContainerCmdModifier(cmd -> {
var cfg = cmd.getHostConfig();
List<String> seclist = Objects.requireNonNullElseGet(cfg.getSecurityOpts(),
LinkedList::new);
seclist.add("seccomp=unconfined");
cfg.withSecurityOpts(seclist);
});
答案4
StackOverflow 上也提出了同樣的問題 - 請參閱我的回复https://stackoverflow.com/a/72467817
總而言之,您的 docker 版本可能< 20.10.10,這是使用基於 Jammy 的映像所需的最低版本。 MariaDB > 10.8.2 使用 Jammy,因此有衝突。
升級 docker 實際上是目前唯一正確的選擇 - MariaDB 10.7 將於 2023 年 2 月 14 日結束支持,而 Docker 19.03(20.10 之前的版本)於 2021 年 7 月 21 日停止支援。