
이 오류는 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 로드는 낮고, 여유 RAM은 100GB 이상, 디스크 여유 공간은 테라바이트에 달합니다.
이 버전에서 이미 변경된 기존 데이터베이스가 있으며 다운그레이드할 위험이 없습니다.
나는 보았다이 문제하지만 MariaDB가 스레드 생성에 실패할 이유는 없습니다.
이 문제를 어떻게 해결할 수 있나요?
답변1
해결책은 MariaDB 버전을 다음으로 변경하는 것입니다.피하다버전 10.8.3
(예: mariadb:10.8.2
or 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
릴리스에 수정 사항이 있기를 바랍니다.
답변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되었습니다.