Networking

我在 Docker 容器中安裝了 Jupyter-Lab,但無法訪問 Jupyter Web UI

  • August 18, 2022

情況:

所以我在網路上的虛擬機中的 Docker 容器內安裝了 Jupyter-Lab。然後我做了一個送出*(我知道這不是正確的做事方式,我應該使用 Docker 文件)*。然後我進入容器 bash 並執行jupyter-lab它,然後將 URL 輸出到 STDOut 以連接到 WebGUI:

 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 Web 界面?

您的輸出jupyter-lab表明 jupyter 僅偵聽容器內的環回介面。要啟用從容器外部的訪問,您需要將其綁定到容器的外部介面(或所有介面)。

jupyter-lab --ip="0.0.0.0"

引用自:https://serverfault.com/questions/1108485