우분투의 그래픽은 시스템이 아니다. 프로그램이다.
그래서 리눅스 서버버전을 실행하면 gui가 없던 것!!
우분투는 `Xorg`라는 그래픽 프로그램을 이용한다. 즉, 얘가 있어야 그래픽을 띄워줄 수 있다는 얘기.
그럼 도커에서 그래픽을 띄워주려면? 호스트의 자원을 공유하면 된다. 호스트의 Xorg를 컨테이너가 이용하면 된다는 말.
실행옵션을 추가해주면 컨테이너에서도 그래픽을 볼 수 있다.
도커를 gui로 실행하는 방법은 두 가지가 있다. 1. VNC를 이용하거나 2. 단순히 XServer를 공유하거나.
VNC를 이용하는 방법은 여기와 여기를 참고하자. Xauthority 어쩌구저쩌구한다.
Xauthority becomes an issue with newer systems. I can either discard any protection with xhost + before running my docker containers, or I can pass in a well prepared Xauthority file. Typical Xauthority files are hostname specific. With docker, each container can have a different host name (set with docker run -h), but even setting the hostname of the container identical to the host system did not help in my case. xeyes (I like this example) simply would ignore the magic cookie and pass no credentials to the server. Hence we get an error message 'No protocol specified Cannot open display'
The Xauthority file can be written in a way so that the hostname does not matter. We need to set the Authentication Family to 'FamilyWild'. I am not sure, if xauth has a proper command line for this, so here is an example that combines xauth and sed to do that. We need to change the first 16 bits of the nlist output. The value of FamilyWild is 65535 or 0xffff.
Xserver를 공유하는 방법이 더 간편하다.
XServer 공유하기
host의 XServer를 볼륨형태로 컨테이너와 공유하자. DISPLAY 환경 변수도 전달해줘야 한다.
유닉스 도메인 소켓을 이용하여 host의 XServer와 도커 컨테이너를 연결한다. readonly옵션을 준다.
XServer소켓은 `/tmp/.X11-unix`에 존재한다.
1
2
|
--volume /tmp/.X11-unix:/tmp/.X11-unix:ro
-e DISPLAY=unix$DISPLAY
|
호스트에서 도커가 xserver와 통신할 수 있도록 설정한다. 다른 터미널을 열고 작업한다.
1
|
$ xhost +local:docker
|
이제 GUI로 도커 이미지를 실행할 수 있다.
참고:
[Running GUI Application inside Docker Containers]
http://wiki.ros.org/docker/Tutorials/GUI
http://blog.topmania.com/?p=1026
'Study > linux' 카테고리의 다른 글
리눅스에서 cgroup 사용 예제 (0) | 2019.11.08 |
---|---|
도커에서 CentOS 컨테이너를 실행할 수 있는이유 (0) | 2019.10.29 |
HPL recipe for target 'build' failed *** [build] Error 2 (0) | 2019.10.17 |
도커 컨테이너에서 가장 마지막으로 수정한 파일을 호스트로 가져오기 (0) | 2019.10.13 |
디렉토리에서 가장 최근 파일의 이름 바꾸기 (0) | 2019.10.13 |