
このエラーは、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
10.8.3 は現在latest
Docker Hub 上のイメージです。イメージ タグは ですea81af801379
。これは 64 ビット Ubuntu 18.04 上にあります。サーバーの CPU 負荷は低く、100 GB 以上の空き RAM とテラバイト単位の空きディスク容量があります。
すでにこのバージョンで変更された既存のデータベースがあり、ダウングレードするリスクを冒したくありません。
私は見たこの問題しかし、MariaDB がスレッドの作成に失敗する理由はありません。
これをどうすれば解決できますか?
答え1
解決策は、MariaDBのバージョンを避けるバージョン10.8.3
、例えばmariadb:10.8.2
または を強制したりmariadb:10.7
、 を設定したりすることで--security-opt seccomp=unconfined
Summer 2022 でDockerfile または docker-compose がmariadb:latest
または を参照している場合mariadb:10
、それは を指しています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
少し奇妙なので、読者が Test Containes で同じ問題に遭遇した場合のフローを次に示します。
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 日に EOL になりました。