개발 혹은 머신러닝 환경을 분리하기 위해 docker container를 쓰는 분들이 있으실 겁니다. 라이브러리뿐만 아니라 운영체제까지 별도로 관리할 수 있어 편리한 기능이죠.
그러나
기본적으로 docker는 터미널 기반으로 동작하기 때문에 UI를 가지고 있지 않습니다. 그 때문에 프로그램에서 UI를 띄우거나, opencv를 이용한 이미지 파일을 띄울 때 (ex. cv2.imshow(img)) 출력할 디스플레이를 찾지 못해 에러가 발생하곤 합니다.
보통은 can't find display~ 나 fails to open display~ 등의 에러 메시지가 출력됩니다.
이를 해결하려면 container를 run 할 때 local 디스플레이 값을 넘겨주어야 합니다!
(ubuntu 20.04 기준으로 작성했습니다.)
방법은 간단합니다!
docker image를 run할 때 -e 파라미터를 통해 환경변수를 넘겨줍니다. -v는 로컬의 디렉터리를 컨테이너에 마운트 시켜줍니다.
docker run -it --name myubuntu -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY ubuntu
이렇게 실행한 다음 컨테이너에서 UI를 띄우는 작업을 하면 로컬 디스플레이로 출력이 됩니다. 😁😁😁
'CS & Programming' 카테고리의 다른 글
vscode에서 black으로 code format 자동화하기 (python) (0) | 2022.04.03 |
---|---|
Ubuntu 20.04에서 swap 메모리 설정하기 (0) | 2022.04.02 |
vscode n번째 글자에 세로선 추가하기 (easy) (0) | 2022.03.25 |
python joblib으로 병렬 프로그래밍을 해보자 (2) | 2021.12.05 |
python *args **kwargs 차이 (0) | 2021.12.02 |