
Эта ошибка возникает даже после очистки кэша образа 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. На сервере низкая загрузка ЦП, 100+ ГБ свободной оперативной памяти и терабайты свободного места на диске.
У меня есть существующая база данных, которая уже была затронута этой версией, и я не хотел бы рисковать, переходя на более раннюю версию.
Я виделЭта проблемано нет никаких причин, по которым MariaDB не сможет создать поток.
Как мне решить эту проблему?
решение1
Решение — изменить версию MariaDB наизбегатьверсия 10.8.3
, например, принудительно mariadb:10.8.2
или mariadb:10.7
, или установить--security-opt seccomp=unconfined
Если ваш Dockerfile или docker-compose ссылаются на mariadb:latest
или mariadb:10
летом 2022 года, это указывает на mariadb:10.8.3
.
Вопреки сообщению @Arno, проблема не в версии Docker. Я использую Docker 20.10.17
, и проблема сохраняется.
Вы также можете напрямую запустить обновленный профиль безопасности:
docker run --security-opt seccomp=/etc/docker/profiles-seccomp-scmp-act-trace.json
Надеюсь, исправление будет в 10.8.3
новой версии MariaDB.
решение2
О проблеме сообщенона GitHub. Обновление Docker, похоже, исправило эту проблему.
решение3
У меня была та же проблема при запуске MariaDB ( latest
) на Gitlab CI с использованиемТестовые контейнерыдля Явы.
Использование seccomp=unconfined
параметра безопасности, как обсуждалось в сообщении Github, ссылка на которое есть у @Arno, решило эту проблему для меня.
Включение этого метода 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 заканчивается 14 февраля 2023 г., а поддержка Docker 19.03 (выпуск до 20.10) прекращена 21 июля 2021 г.