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 로드는 낮고, 여유 RAM은 100GB 이상, 디스크 여유 공간은 테라바이트에 달합니다.

이 버전에서 이미 변경된 기존 데이터베이스가 있으며 다운그레이드할 위험이 없습니다.

나는 보았다이 문제하지만 MariaDB가 스레드 생성에 실패할 이유는 없습니다.

이 문제를 어떻게 해결할 수 있나요?

답변1

해결책은 MariaDB 버전을 다음으로 변경하는 것입니다.피하다버전 10.8.3(예: mariadb:10.8.2or mariadb:10.7, or 을 강제로 설정)--security-opt seccomp=unconfined

Dockerfile 또는 docker-compose가 2022년 여름 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릴리스에 수정 사항이 있기를 바랍니다.

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

답변2

문제가 보고되었습니다.GitHub에서. Docker를 업그레이드하면 문제가 해결되는 것 같습니다.

답변3

latest다음을 사용하여 Gitlab CI에서 MariaDB()를 실행하는 것과 동일한 문제가 있었습니다.테스트 용기자바의 경우.

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 버전은 Jammy 기반 이미지를 사용하는 데 필요한 최소 버전인 20.10.10 미만일 가능성이 높습니다. MariaDB > 10.8.2에서는 Jammy를 사용하므로 충돌이 발생합니다.

현재 시점에서 Docker를 업그레이드하는 것이 실제로 유일한 올바른 옵션입니다. MariaDB 10.7은 곧 2023년 2월 14일에 지원이 종료되고 Docker 19.03(20.10 이전 릴리스)은 2021년 7월 21일에 EOL되었습니다.

관련 정보