Container/Docker

에러 해결법: ImportError: libGL.so.1: cannot open shared object file: No such file or directory

검정비니 2023. 10. 9. 18:12
728x90
반응형

Ubuntu 도커 이미지 상에서 혹은 EC2 ubuntu나 ECS 등에서 opencv-python를 설치한 뒤 cv2를 import하려고 할 때 다음과 같은 에러 메세지를 마주할 수 있다.

ImportError: libGL.so.1: cannot open shared object file: No such file or directory



이러한 에러가 나는 가장 큰 이유는 cv2의 dependency 라이브러리 파일들 중 일부가 설치가 안 되어 있어서 생기는 에러이다. 보통 우분투를 로컬 머신에 설치하면 거의 일어나지 않는 경우이나, Docker 이미지나 EC2 프리티어 버전 등에서는 이러한 에러가 잘 발생한다.

우선, 일반적으로 가장 잘 알려진 해결법으로는 "libgl1-mesa-glx" 패키지를 설치하는 것이다.

sudo apt install libgl1-mesa-glx



도커 파일을 사용한다면 아래의 코드를 추가하라.

RUN apt-get update && apt-get -y install libgl1-mesa-glx



추가로, 위의 커멘드를 도커 파일에 추가할 때, `apt-get update`와 `apt-get -y install libgl1-mesa-glx`를 두 줄로 분리시키지 말고 반드시 위의 경우처럼 하나의 커멘드로 합쳐서 실행시키도록 하라. 그 이유는 `RUN apt-get update`만 별도로 실행시켰을 때, 도커 엔진 내부에서 캐시 이슈가 발생할 수 있기 때문이다.

만약 "libgl1-mesa-glx"를 설치했음에도 같은 에러가 다시 발생한다면, 아래의 커멘드를 통해서 다른 추가 패키지들을 설치해보면 된다.

sudo apt-get update && apt-get install ffmpeg libsm6 libxext6  -y



도커 파일의 경우는 아래의 커멘드를 추가해주면 된다.

RUN apt-get update && apt-get install ffmpeg libsm6 libxext6  -y

 

반응형

'Container > Docker' 카테고리의 다른 글

도커 리소스 사용량 제한  (0) 2023.10.25
모든 docker 이미지 지우기  (0) 2023.10.09
Docker attach와 exec의 차이  (2) 2023.10.09