2016-06-01 6 views
1

내 컴퓨터에서 원격 서버로 Jupyter Notebook (computer> server> Docker 컨테이너)을 실행하는 도커 컨테이너로 ssh 터널을 만들고 싶습니다. Jupyter Notebook을 내 브라우저에서 내 컴퓨터에.Jupyter 노트북을 실행하는 원격 도커 컨테이너에 ssh 터널을 만듭니다.

Docker 컨테이너는 OS X (El Capitan)가 실행되는 컴퓨터에서 호스팅됩니다. Docker가 기본 시스템 IP : 192.168.99.100을 사용 중입니다.

$ docker-machine ls 
NAME  ACTIVE DRIVER  STATE  URL       SWARM DOCKER ERRORS 
default *  virtualbox Running tcp://192.168.99.100:2376   v1.11.1 

나는 물리적으로 도커 컨테이너를 실행하는 서버에 앉아서 그 도커 컨테이너에서 Jupyter 노트북을 만들 브라우저 (192.168.99.100:8888)를 사용할 수있게되었습니다. 이렇게하면 Docker 포트 바인딩이 작동하고 Jupyter Notebook이 올바르게 실행되고 있는지 확인할 수 있습니다.

그러나 클라이언트 컴퓨터에서 해당 원격 컴퓨터의 Docker 컨테이너로 ssh 터널을 설정하고 클라이언트 컴퓨터의 브라우저에서 Jupyter Notebook을 시작하는 방법을 모르겠습니다.

이의 출력 :

$ docker ps 

는 생산 다음

CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS        NAMES 
48a8ac126c72  kubu4/bioinformatics:v11 "/bin/bash"   55 minutes ago  Up 55 minutes  8787/tcp, 0.0.0.0:8888->8888/tcp stupefied_pasteur 

내가하려고 할 때 터미널에서 다음과 같은 오류 메시지가 원격 시스템의 부두 노동자 컨테이너 결과에 SSH 터널을 생성에서 내 시도 Jupyter Notebook을 클라이언트 컴퓨터 (localhost : 8888)의 브라우저에서 실행하십시오 :

channel 3: open failed: connect failed: Connection refused 
나는에 Jupyter 노트북을 실행하면

Host tunnel3 
HostName remote.ip.address 
User user 
ControlMaster auto 
ServerAliveInterval 30 
ServerAliveCountMax 3 
LocalForward localhost:8888 localhost:8888 

내가 성공적으로 내 클라이언트 브라우저에 Jupyter 노트북을 출시 할이 터널링 구성을 사용할 수 있습니다 :

저는 현재 터널을 만들기 위해 내 스푸핑/config 파일에 다음을 사용하고 있습니다 원격 컴퓨터에있는 Docker 컨테이너 외부의 원격 컴퓨터.

$ jupyter notebook 
[I 18:23:32.951 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret 
[I 18:23:33.072 NotebookApp] Serving notebooks from local directory: /usr/local/bioinformatics 
[I 18:23:33.073 NotebookApp] 0 active kernels 
[I 18:23:33.073 NotebookApp] The Jupyter Notebook is running at: http://0.0.0.0:8888/ 
[I 18:23:33.074 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). 

답변

4

내가 그것을 알아 냈 : 방금 추가 정보를 원하시면

이 내가 원격 시스템의 부두 노동자 컨테이너에 Jupyter 노트북을 시작 출력입니다! "아 - 하!" Docker를 실행하는 원격 시스템이 OS X (El Capitan)임을 기억하고있었습니다. 모든 Docker 빌드/테스트는 Linux (Ubuntu 14.04) 시스템에서 수행되었습니다. 차이점은이 문제를 해결하는 데 중요하다는 것입니다.

우분투에 도커를 설치하면 "localhost"를 사용하여 Docker 컨테이너를 해결할 수 있습니다. Docker를 OSX에 설치하면 Docker 컨테이너 주소 지정에 사용할 IP 주소가 생성됩니다.

이 사실을 알기 위해 클라이언트 컴퓨터의 .sh/config 파일에서 ssh 터널링 구성을 변경했습니다.

올드 터널링 설정 :

Host tunnel3 
HostName remote.ip.address 
User user 
ControlMaster auto 
ServerAliveInterval 30 
ServerAliveCountMax 3 
LocalForward localhost:8888 localhost:8888 

새로운 터널링 구성이 변화

Host tunnel3 
HostName remote.ip.address 
User user 
ControlMaster auto 
ServerAliveInterval 30 
ServerAliveCountMax 3 
LocalForward localhost:8888 192.168.99.100:8888 

, 나는 성공적 실제로 도커 컨테이너에서 호스팅되는 내 클라이언트 브라우저에 Jupyter 노트북을 사용/생성 할 수 있습니다 URL 바에서 localhost : 8888을 사용하여 원격 시스템에 로그인하십시오.