docker container에서 GUI 애플리케이션을 수행할 필요가 있는 경우가 많다.
이를테면 vscode를 실행시킨다던지, 심심하니까 xeyes를 실행시켜 놓는다던지..
아래 설명한 방법을 사용하면 docker container가 무엇이든 X windows와 연동하여 GUI 애플리케이션 수행이 가능하다.
참고로 여기서는 테스트를 위해서 ubuntu를 container로 설치하여 설명한다.
( 참고로 저의 경우 tensorflow와 pytorch docker container에서 vscode를 주로 호출해서 사용합니다.
OS로 사용하는 ubuntu에 기본 외에 다른 것을 설치하기를 싫어하기 때문이며
개발환경은 가급적 docker 내에 구성하려고 애쓰는 편입니다. )
□ docker container에서 GUI 환경 사용
docker 환경에서 GUI application을 사용하는 것을 테스트 하기 위해 ubuntu 환경을 설치한다.
$ docker pull ubuntu
docker container를 X windows와 연동할 수 있도록 옵션을 붙여서 수행한다.
$ docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --name ubuntu1 ubuntu
위에서 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY 옵션은 핵심이다.
또한 --name ubuntu1에서 ubuntu1은 작성 예일 뿐이며 당연히 사용자가 원하는 이름으로 정하면 된다.
참고로 exit로 빠져나왔을 경우
$ docker start utuntu1
$ docker attach ubuntu1
□ 연동 확인 테스트
docker의 ubuntu1 컨테이너를 실행시킨 후
X windows 연동 테스트를 위해서 xeyes를 사용하고 xeyes 설치를 위해 x11-apps를 설치한다.
$ apt-get update
$ apt-get install x11-apps
xeyes를 실행하면 보통은 아래처럼 오류가 나온다.
$ xeyes
No protocol specified
Error: Can't open display: :1
docker container가 아닌 외부에서 다른 터미널을 하나 띄우고 아래와 같이 수행한다.
docker user가 실행하는 모든 프로그램을 X windows와 통신하게 해준다.
$ xhost +local:docker
해제하려면 다음과 같이 수행한다.
$ xhost -local:docker
docker user 외에도 아래처럼 X windows를 로그인한 user로 설정해도 된다.
xhost +local:$USER
xhost -local:$USER
'Linux' 카테고리의 다른 글
nvdia driver, CUDA, CUDNN 설치 여부 및 버전 검사 (0) | 2019.09.15 |
---|---|
docker에 visual studio code 설치 (0) | 2019.07.14 |
ubuntu 18.04 - 우분투(Ubuntu) nvidia driver 설치 및 업그레이드 (0) | 2019.07.14 |
ubuntu 18.04 - Ubuntu 한글 입력기 설치(fcitx) (1) | 2019.07.14 |
How can I install CUDA 9 on Ubuntu 17.10 (0) | 2018.07.20 |