Server/VM

Docker 컨테이너 ssh 접속 및 GUI

§§ 2017. 5. 24. 14:28

얼마전 딥러닝 환경을 위해서 

도커(docker) 를 설치해서 ubuntu를 사용했는데

docker 컨테이너에서 GUI화면이 뜨지않고 DISPLAY 에러가 발생해서 

이도저도 못했던 일이 발생했습니다. 


구글링을 통해 docker run 할때 옵션을 주고 컨테이너에서 패키지 다운받고

이것저것 하라고 해서 했는데 다 안되더군요. (내가 못하는거지...ㅜㅜ)


혼자서 삽질만 하다가 발견한 방법을 작성합니다.

일단 제 구성 환경은

windows 7의 docker를 설치 docker 에서 ubuntu 이미지를 다운받아서 테스트 하였습니다.


해결 방법이 조금 꼼수 같네요

사용 port를 설정(-p 8022:8022) 하고

net설정을 host(ip가 동일 사용되므로 서버에서는 이 방법이 불가능 할듯 합니다)

ssh 설치 및 재기동합니다.


##  일단 port 설정하고 ssh로 설정포트로 접속

$ docker run -it -p 8022:8022 --net=host --name test test_image /bin/bash

## 이러면 로컬장비와 docker 컨테이너가 같은 IP를 사용합니다.

## port 8022를 사용설정되어 있으므로 ssh를 8022로 변경합니다.

$ sudo apt-get update

$ sudo apt-get ssh

$ vi /etc/ssh/sshd_config   ###port 수정  8022

$ /etc/init.d/ssh restart


## 사용 계정을 따로 만들어도 되고

## root password 변경해도 된다.


여기까지 했다면 putty(Xming 있는 상태)나 Xmanager로 접속을 합니다. 

(사용 프로그램에 따라 설정 포트로 접속하세요

$ ssh xxx.xxx.xxx.xxx 8022 


접속 해서 DISPLAY 변수를 확인합니다.

$ echo $DISPLAY  

localhost:10.0

위와 같은 문구가 표시되면 컨테이너로 ssh로 접속도 가능하고 GUI도 이용 됩니다.


### 확인 사항

만약 window환경이 아닌 다른 환경에서 도커 사용할 경우

kernel 버전 3.16 이하라면 

컨테이너에서 접속하여 password 수정이 되지 않는 현상이 발생합니다.

ubuntu 14.04에서 도커 사용시 컨테이너 패스워드 수정이 불가능 하였습니다.