【发布时间】:2016-10-01 06:23:12
【问题描述】:
我想创建一个从我的计算机到远程服务器到运行 Jupyter Notebook(计算机>服务器>Docker 容器)的 docker 容器的 ssh 隧道,它允许我在我的计算机上的浏览器中运行 Jupyter Notebook。
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
我能够实际坐在运行 Docker 容器的服务器上,并使用我的浏览器 (192.168.99.100:8888) 从该 Docker 容器创建 Jupyter Notebooks。这将验证我的 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
当我尝试在客户端机器 (localhost:8888) 上的浏览器中启动 Jupyter Notebook 时,我尝试创建到远程机器的 Docker 容器的 ssh 隧道导致终端中出现以下错误消息:
channel 3: open failed: connect failed: Connection refused
我目前在我的 .ssh/config 文件中使用以下内容来创建隧道:
Host tunnel3
HostName remote.ip.address
User user
ControlMaster auto
ServerAliveInterval 30
ServerAliveCountMax 3
LocalForward localhost:8888 localhost:8888
如果我在远程计算机上的 Docker 容器之外的远程计算机上运行 Jupyter Notebook,我可以使用此隧道配置在我的客户端浏览器中成功启动 Jupyter Notebook。
只是为了补充信息,这是我在远程机器的 Docker 容器中启动 Jupyter Notebook 时的输出:
$ 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).
【问题讨论】:
标签: ssh docker osx-elcapitan jupyter-notebook