我运行一个jupyter笔记本在一个docker容器(ubuntu)上运行一个远程机器(亚马逊p2)。我想通过我的浏览器(http://localhost:8883/)访问笔记本,但我得到:
open failed: connect failed: Connection refused
我的ssh配置:
Host p3
HostName <remote machine ip>
User <user>
LocalForward 8883 127.0.0.1:8884
我正在运行容器(在远程机器上):
nvidia-docker run -it -p 8884:8884 <docker image>
在我运行的docker容器上:
jupyter-notebook --NotebookApp.iopub_data_rate_limit=10000000000 --no-browser --port=8884 --allow-root
我能够连接到远程机器上运行的笔记本(不在docker容器中)。
如何从浏览器连接到docker机器上运行的笔记本?
这是一个极好的问题。我的日常开发工作流程涉及从我的笔记本电脑连接到运行在gpu加速服务器上docker容器上的jupyter笔记本电脑。
该问题分为三个部分:
>
容器
主办
遥远的
您需要确保您可以ssh到您的容器。我修改了Docker的sshd示例中的Dockerfile。您应该修改Docker示例以满足您的需要;e、 您的用例是否允许您以root用户身份连接
我已经为无密码ssh设置了容器。注意:您可以预先制作无密码ssh所需的文件,并在构建映像时将其复制到适当的目录中
如果您想在以后保存一些输入,我强烈建议您也修改jupyter配置文件
我假设你在主机上运行linux。你必须创建一个docker网络。您应该只需要--attacable
选项。我喜欢在我的/etc/host
中有一个条目,以使生活更轻松,例如:
172.21.0.2 container-1 container-1
您还必须修改您的/home/
Host container-1
Hostname container-1
IdentityFile ~/.ssh/containers_rsa
User root
Host tunnel-container-1
Hostname container-1
IdentityFile ~/.ssh/containers_rsa
User root
LocalForward 8888 localhost:8888
LocalForward 8000 localhost:8000
你难道不厌倦必须键入
nvidia docker
下面是一个示例/etc/docker/daemon。json
:
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"graph":"/docker-files"
}
你快到了。您需要能够建立到远程系统的ssh隧道。示例
~/。本地系统的ssh/config
:
Host remote_host
Hostname remote_host
IdentityFile ~/.ssh/remote_host/remote_rsa
Host tunnel-remote_host
Hostname remote_host
IdentityFile ~/.ssh/remote_host/remote_rsa
LocalForward 10000 localhost:8888
LocalForward 10006 localhost:8000
一个重要的音符。我在我的本地
/etc/host
中有一个远程主机的条目。您的实例可能没有静态ip。因此,您可以在每次启动实例时修改本地/etc/host
,或者使用所有正确的LocalForward
指令将脚本sshing到远程系统。
假设您的远程实例已成功启动且Docker正在正确运行。此外,它假设您已经完成了我提到的方便步骤。
SSH远程。
- 启动docker容器。请注意容器名称,或者更好地指定它。
- 连接你的容器到你的网络.例如
docker网络连接skynet容器-1
.您可以通过运行docker网络检查skynet
来检查您的容器是否已附加。请注意,您的网络很可能会被命名为其他东西,然后skynet
。 - SSH你的docker容器,例如
ssh容器-1
. - 启动您的juypyter服务器
如果一切正常,您应该连接到您的jupyter服务器,并在您在Dockerfile中指定的根目录中!
首先,确认您可以使用正确的运行时环境手动启动docker容器。确认您可以ssh并启动jupyter笔记本。是的,您将无法连接到它,但您将知道所有这些部件都在工作。接下来确认您可以使用容器从远程到容器建立ssh隧道。通过使用
wget
获取jupyter服务器登录页的html,可以确认隧道是否正常工作。接下来检查从本地到远程/主机的转发。我花了一些时间尝试了一个错误,以获得LocalForward
指令的正确顺序。
我希望这能有所帮助。
我在建立从本地计算机到我在docker容器中的远程服务器上运行的jupyter笔记本实例的连接时遇到问题。 到目前为止我所做的: 我使用 我运行以确保我的容器尚未运行 现在我用
在WSL 2上,远程访问运行在docker容器中的jupyter笔记本是否有一般方法? 仅供参考,WSL2(Ubuntu 20.04)是按照以下说明安装的: https://ubuntu.com/blog/getting-started-with-cuda-on-ubuntu-on-wsl-2
问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我想在我可以访问的计算机上运行服务器,并且已经能够在本地运行笔记本计算机。 如何设置以便可以 远程 访问? 问题答案: 如果您具有ssh访问将运行服务器的计算机的权限,请执行以下步骤: 1)在将运行 服务器 的机器上,执行: 2)
我按照官方指示在Ubuntu 16.04上安装了docker,并成功地将注册表作为容器运行。我想远程连接到另一个容器,所以我尝试: 我得到一个错误: 连接过程中出错:Posthttp://1.2.3.4:2375/v1.29/containers/19f36d1bdfaf/exec: 拨打tcp 1.2.3.4:2375:connectex:无法建立连接,因为目标计算机主动拒绝连接。 为什么会出现
我想创建一个ssh隧道,从我的计算机到远程服务器,再到运行Jupyter Notebook(计算机)的docker容器 Docker容器托管在运行OS X(El Capitan)的机器上。Docker正在使用默认的机器IP:192.168.99.100。 我可以坐在运行Docker容器的服务器上,使用浏览器(192.168.99.100:8888)从Docker容器创建Jupyter笔记本。这将验
在使用macOS Mojave的本地机器中,我安装了一个虚拟环境,其中包含Python 3.6、opencv包和一些其他不相关的包。 我开始了一个非常简单的Jupyter笔记本,执行没有问题,这是代码: 现在,我正试图在远程Ubuntu机器上的Jupyter笔记本中执行相同的代码,但我无法使其工作。以下是我采取的步骤: 我将图像文件和笔记本ypnb文件复制到远程ubuntu机器上 我打开了一个ss