连接到在远程服务器上的 docker 中运行的 jupyter notebook

Que*_*ons 5 ssh-tunnel docker jupyter-notebook

我在建立从本地机器到我在远程服务器上运行的 docker 容器中的 jupyter 笔记本实例的连接时遇到问题。

到目前为止我做了什么:

我连接到远程服务器 ssh username@remoteHostIp

我运行docker container ls以确保我的容器尚未运行

现在我开始我的容器 docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

我现在在我的容器中使用终端并启动一个无浏览器的 jupyter 笔记本实例

jupyter notebook --no-browser --port=8889 --allow-root
Run Code Online (Sandbox Code Playgroud)

它启动成功:

The Jupyter Notebook is running at:
[I 11:14:51.979 NotebookApp] system]:8889/
Run Code Online (Sandbox Code Playgroud)

现在我在本地计算机上启动另一个 shell 并创建一个 ssh 隧道:

ssh -N -f -L localhost:8888:localhost:8889 username@ remote_host_name
Run Code Online (Sandbox Code Playgroud)

几秒钟后,我的 shell 返回以下内容:

channel 2: open failed: connect failed: Connection refused
channel 2: open failed: connect failed: Connection refused
channel 2: open failed: connect failed: Connection refused
Run Code Online (Sandbox Code Playgroud)

我无法使用 localhost:8888/ 或 localhost:8889/ 访问 jupyter notebook

当我在 docker 容器外的远程服务器上运行 jupyter notebook 并创建 ssh 隧道时,一切正常。

一些附加信息:远程服务器:经销商 ID:Ubuntu 描述:Ubuntu 16.04.3 LTS 版本:16.04 代号:xenial

我的本地机器在 osx moave 上运行

sri*_*tel 8

首先,您应该使用以下命令连接到远程服务器

ssh username@remoteHostIp
Run Code Online (Sandbox Code Playgroud)

连接到它后,您应该使用运行 docker 容器

docker run -it -p 8080:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning
Run Code Online (Sandbox Code Playgroud)

我在这里考虑端口 8888 是 jupyter notebook 端口,8080 是远程服务器端口

现在在本地机器上打开一个新的终端窗口,使用以下选项再次通过 SSH 连接到远程机器以设置端口转发。

ssh -N -L localhost:8000:localhost:8080 username@remoteHostIp
Run Code Online (Sandbox Code Playgroud)

我正在考虑这里的端口 8000 是我的本地机器端口,而 8080 就像我上面所说的那样已经是远程服务器端口

现在通过本地浏览器访问远程 jupyter 服务器。打开浏览器并转到:

localhost:8000
Run Code Online (Sandbox Code Playgroud)


Que*_*ons 2

我通过连接到删除服务器并检查 docker 容器 ip 地址:自己解决了这个问题docker inspect <container_name>。然后我使用该 IP 地址创建 ssh 隧道:

ssh -N -f -L localhost:8889:dockerContainerIpAdress:8889 username@ remote_host_name
Run Code Online (Sandbox Code Playgroud)

现在我可以使用 localhost:8889 连接到本地浏览器中的 jupyter 笔记本