我已经在 Docker 容器内安装了 Jupyter-Lab,但无法访问 Jupyter Web UI

我已经在 Docker 容器内安装了 Jupyter-Lab,但无法访问 Jupyter Web UI

情况:
因此,我在网络上的虚拟机中的 Docker 容器内安装了 Jupyter-Lab。然后我提交了(我知道这不是正确的做法,我应该使用 Docker 文件)。然后我进入容器 bash 并运行jupyter-lab此命令,然后将连接到 WebGUI 的 URL 输出到 STDOut:

  http://localhost:8888/
  or http://127.0.0.1:8888/

下面是我的设置图:

┌─────────────────────────────┐
│                             │
│ VM Container                │
│          IP: 192.168.10.223 │                                    ┌────────────────────┐
│   Docker IP: 172.17.0.1     │                                    │                    │
│                             │  My Local 192.168.10.0/24 Network  │ My Machine         │
│  ┌─────────────────────┐    │xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx│                    │
│  │ Docker              │    │                                    │  IP: 192.168.10.50 │
│  │       Jupyter-Lab   │    │                                    │                    │
│  │                     │    │                                    └────────────────────┘
│  └─────────────────────┘    │
│                             │
└─────────────────────────────┘

问题:
我似乎无法连接到 Jupyter WebGui。我尝试了以下命令:

 sudo docker run -it --rm -p 8888:8888 -v $(realpath ~/notebooks):/tf/notebooks 
 sudo docker run -it --rm -p 8888:8888 --expose 8888 -v $(realpath ~/notebooks):/tf/notebooks 
 sudo docker run -it --rm -p 127.0.0.1:8888:8888 -v $(realpath ~/notebooks):/tf/notebooks 
 sudo docker run -it --rm -p 8888:8888 --ip 0.0.0.0 -v $(realpath ~/notebooks):/tf/notebooks 

我似乎无法从 192.168.10.50 机器连接到 Jupyter 实例。我运行后,netstat -tulnp清楚地显示端口 8888 已暴露:

docker_machine@instance:~$ netstat -tulpn
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:45511         0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
udp        0      0 127.0.0.53:53           0.0.0.0:*                           -

这表明它正在监听任何要连接的地址,所以我不明白。

问题
为什么当我将浏览器指向 192.168.10.223:8888 时无法获取 Jupyter 网络界面?

答案1

您的输出jupyter-lab表明 jupyter 仅在容器内部监听环回接口。要启用从容器外部的访问,您需要将其绑定到容器的外部接口(或所有接口)。

jupyter-lab --ip="0.0.0.0"

相关内容