Docker 컨테이너 ssh 접속 및 GUI
얼마전 딥러닝 환경을 위해서
도커(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에서 도커 사용시 컨테이너 패스워드 수정이 불가능 하였습니다.