다운로드 링크가 정상적으로 보이지 않는 경우 애드블록을 해제해 주세요.
본문 바로가기
  • 혜음우리말화연구소
잡담/대학원

외부 서버의 docker 내에서 xwindow 사용

by WindowsTiger 2022. 2. 20.

이번에 xilinx vitis를 사용해야 하는데 랩장님이, 현재 서버의 vitis는 자신의 home 디렉토리에 설정이 많이 맞춰져 있어서 docker에 따로 깔으라 하셨다(...)

 

docker자체도 어렵긴 하지만 뭐 금방 익숙해 지긴 했는데 (그냥 가볍고 귀찮은 가상머신이라 생각하면 될듯?) 문제는 xwindow가 안됬다.

대부분 인터넷에 나온 방법은 docker가 host(현재 사용하고 있는 컴퓨터)에서 사용하기 때문일 것이다.

 

하지만 여기서는 host가 아니라 랩 내 서버이고, 그 상에서 docker를 사용하니 제대로 전달이 안되는데 해결방법은 다음과 같다.

docker를 생성할때 다음과 같이 생성한다.

docker run
-it
--net=host
-v /tmp/.X11-unix:/tmp/.X11-unix
-v $HOME/.Xauthority:/root/.Xauthority:rw
-e DISPLAY=$DISPLAY
--name wintiger_vitis
ubuntu:18.04

--net=host는 도커를 bridge 모드가 아니라 host 모드로 만들어 준다. 이래야지 잘 되는것 같다.

-v 옵션은 .X11-unix 폴더와 .Xauthority 폴더를 공유한다

-e는 DISPLAY 환경변수를 공유한다.

 

이렇게 docker를 생성하면 대충 잘 작동한다.

 

문제점 1. 외부서버에 ssh를 이용해서 접속했을때, DISPLAY 환경변수가 서버에서 매번 다르게 지정해 주기에, docker에 먼저 들어가기 전에 echo $DISPLAY로 환경변수 값을 먼저 확인하고 docker에 들어가서 export DISPLAY="변수"를 이용해 DISPLAY 변수를 수동으로 지정해 줘야한다. 사실 이러면 -e DISPLAY=$DISPLAY가 뭔 의미가 있나 싶긴 한데...

 

문제점 2. 가끔 Xauthority 파일 문제로 안되는 경우가 있다, 이경우에는 걍 docker 외부에서 docker 내부로 docker cp를 이용해 직접 .Xauthority파일을 복사해 주면 된다.

댓글