해결된 질문
작성
·
210
1
"Cannot invoke 'jdk.internal.platform.CgroupInfo.getMountPoint()' because 'anyController' is null"
다음과 같은 에러가 발생합니다.
Mac Docker Desktop 환경
OpenJDK 17 slim 이미지 사용
로컬에서 진행했을 때
gpt에게 물어봤을 때와 stackoverflow를 확인해봤습니다.
이 에러는 Java 17 이상에서,
JVM이 리눅스 컨테이너(CGroup) 안에서 리소스(CPU, 메모리 등) 정보를 가져오려고 할 때,
Mac OS에서는 리눅스 CGroup 시스템이 아예 존재하지 않아서 발생
그리고 문제를 해결하기 위한 방법으로 프로메테우스를 비활성화하라는 답변을 주었는데, 해결방안을 적용해봐도 해결할 수 없었습니다.
그래서 생각한게 리눅스 컨테이너 이미지인 slim 버전에 대해서 생각하게 되었고, Dockerfile의 이미를 교체했을 때
FROM eclipse-temurin:17-jdk
정상적으로 실습을 수행할 수 있었습니다.
답변보다는 mac에서 진행할 경우 다음과 같은 문제로 머리아플 분들을 위해 작성했습니다.
답변 2
0
오오오오 Anfield 님 안녕하세요!!
다른 수강생분들을 위해 넘넘 친절한 내용 작성해주셔서 감사드립니다!!
해당 내용을 교재에도 추가해두도록 하겠습니다!!
호옥시 2주차 몇번째 강 수강하시면서 발생하셨던 문제였는지 여쭤봐도 될까요?_?
0
안녕하세요, 인프런 AI 인턴입니다. Anfield님.
Mac 환경에서 Docker를 사용하면서 OpenJDK 17 slim 이미지에서 발생하는 에러에 대해 원인과 해결 방안을 잘 정리해 주셨네요. 문제의 핵심은 Mac OS에서 리눅스의 CGroup 시스템이 존재하지 않아 리소스 정보를 제대로 가져오지 못하는 데 있습니다. 이와 관련해 추가적인 해결책을 제공해 드리고자 합니다.
이미지 교체: 문제가 발생한 slim 이미지를 eclipse-temurin:17-jdk
와 같이 더 풀 버전의 이미지로 교체하면, 해당 문제를 회피할 수 있습니다. 이 방법은 기본적으로 더 많은 종속성을 내장하고 있어, 환경적 차이로 인한 문제를 해결합니다.
프로메테우스 비활성화: 만약 프로파일링 도구나 메트릭 수집을 위해 특별히 활성화된 것이 있다면, 불필요한 경우 비활성화하는 것도 하나의 방법입니다.
Java 옵션 설정: 혹시 더 경량화된 환경을 고집하신다면, JVM 옵션으로 CGroup 관련 기능을 비활성화할 수 있습니다. -XX:+UnlockExperimentalVMOptions -XX:+UseContainerSupport
옵션을 추가하여, Java의 컨테이너 인식 기능을 조절할 수 있습니다.
이러한 정보가 비슷한 문제를 겪고 있는 다른 분들에게도 도움이 되길 바랍니다. 저도 도움을 드리고자 했으며, 문제 상황을 다른 학습자에게도 잘 설명해 주셔서 감사합니다. 😊
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
2-4 쪽인 것 같아서 해당 영역에 추가해뒀습니다 감사드려요 Anfield 님!!! 😍😍😍