로컬 컴퓨터에 GitLab CI 실행기를 설정했습니다. 실행기는 "셸" 실행기를 사용하므로 작업은 호스트 환경에서 직접 실행됩니다.
Julia에는 분석 도구가 있습니다. 일부 C++ 코드에 대한 일부 종속성이 있습니다. 빌드 시간을 향상시키기 위해 이러한 종속성을 julia 패키지에 사전 빌드하는 도커 이미지를 만들고 싶습니다. 이런 방식으로 Ubuntu 22.04(CI 호스트는 22.04, 커널 6.2)를 기반으로 하는 도커 이미지를 갖게 되었습니다. 이 이미지에는 Julia가 설치되어 있습니다. 우리는 사용하려고합니다바이너리 생성기.jlJulia 패키지를 빌드하기 위한 도구입니다.
이미지를 빌드하기 위해 dockerfile에서 BinaryBuilder를 실행하면 오류가 발생합니다 ABORTED (1: Operation not permitted)!
. 위에는 다음과 같은 경고가 표시됩니다.
경고: 이 시스템에서는 권한이 없는 컨테이너를 실행할 수 없습니다! 이는 커널이 사용자 네임스페이스 내에서 오버레이 파일 시스템 마운트를 지원하지 않기 때문일 수 있습니다. 이 문제를 해결하기 위해 대신 권한 있는 컨테이너를 사용하겠습니다. 이를 위해서는 sudo를 사용해야 합니다. 이 옵션을 자동으로 선택하려면 Julia를 시작하기 전에 BINARYBUILDER_RUNNER 환경 변수를 "privilege"로 설정하세요.
이 경고는 여기에서 호출됩니다.FAQ의 일부. 그러나 이 FAQ의 버그 보고서는 커널 4.2에서 나온 것입니다. 저 할 수 있어요상상하다이것은 최근 커널에서 수정되었으며 내가 읽는 방식은 다음과 같습니다.이 게시물5.11에서 수정된 것으로 보입니다. 또한 약속했다 92dbc9d
.5.11 변경 로그나에게도 그런 것 같다.
따라서 핵심 질문은 CI의 Ubuntu 22.04에서 이 도구를 작동시키는 방법입니다. 한 가지 방법은 특권적인 액세스를 제공하는 것인데, 그렇게 할 수는 있지만 분명히 이상적이지는 않습니다. 나는 overlayfs
그들의 FAQ에 있는 질문이 최신 커널에서 해결된 빨간 청어이고 다른 문제도 있다는 점이 걱정됩니다 .