MariaDB 10.8.3 no Docker: não é possível inicializar temporizadores

MariaDB 10.8.3 no Docker: não é possível inicializar temporizadores

Este erro acontece mesmo depois de limpar o cache de imagens do 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 é atualmente a latestimagem no Docker Hub. A etiqueta da imagem é ea81af801379. Isso está no Ubuntu 18.04 de 64 bits. O servidor tem baixa carga de CPU, mais de 100 GB de RAM livre e terabytes de espaço livre em disco.

Tenho um banco de dados existente que já foi tocado por esta versão e que não gostaria de arriscar fazer o downgrade.

Eu tenho vistoesse assuntomas não há razão para que o MariaDB não consiga criar um thread.

Como posso resolver isso?

Responder1

A solução é mudar a versão do MariaDB paraevitarversion 10.8.3, por exemplo, forçando mariadb:10.8.2ou mariadb:10.7, ou para definir--security-opt seccomp=unconfined

Se o seu Dockerfile ou docker-compose estiver fazendo referência mariadb:latestou mariadb:10no verão de 2022, isso está apontando para mariadb:10.8.3.

Ao contrário do post de @Arno, a versão Docker não é o problema. Estou executando o Docker 20.10.17e o problema persiste.

Você também pode executar diretamente com um perfil de segurança atualizado:

docker run --security-opt seccomp=/etc/docker/profiles-seccomp-scmp-act-trace.json

Esperançosamente, uma correção estará no 10.8.3lançamento do MariaDB.

https://github.com/MariaDB/mariadb-docker/issues/434

Responder2

O problema foi relatadono GitHub. Atualizar o Docker parece resolver isso.

Responder3

Eu tive o mesmo problema ao executar MariaDB ( latest) no Gitlab CI usandoContêineres de testepara Java.

Usar a seccomp=unconfinedopção de segurança - conforme discutido no Github relatado com link por @Arno resolveu isso para mim.

Habilitar isso testcontainers-javaé um pouco estranho, então aqui está o fluxo se os leitores encontrarem o mesmo problema com 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);
});

Responder4

Esta mesma pergunta foi feita no StackOverflow - veja minha resposta láhttps://stackoverflow.com/a/72467817

Para resumir, sua versão do docker é provavelmente <20.10.10, que é o mínimo necessário para usar imagens baseadas em Jammy. MariaDB> 10.8.2 usa Jammy, então há um conflito aí.

Atualizar o docker é realmente a única opção correta neste momento - MariaDB 10.7 encerra o suporte em breve em 14/02/2023, e Docker 19.03 (o lançamento antes de 20.10) entrou em EOL em 21/07/2021.

informação relacionada