Docker の MariaDB 10.8.3: タイマーを初期化できない

Docker の MariaDB 10.8.3: タイマーを初期化できない

このエラーは、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 は現在latestDocker 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

参考: MariaDB の Docker リポジトリに、Docker のリポジトリへのリンクがあります。

答え2

この問題は報告されたGitHubでDocker をアップグレードすると修正されるようです。

答え3

latestGitlab 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 になりました。

関連情報