簡體   English   中英

無法從 docker 訪問 jupyter notebook

[英]Can't access jupyter notebook from docker

我正在嘗試運行在 Docker 中創建的 jupyter notebook。

首先我運行一個容器:

docker run -p 8888:8888 jupyter/tensorflow-notebook

我得到的是:

[I 19:44:47.140 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[I 19:44:51.731 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.7/site-packages/jupyterlab
[I 19:44:51.732 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 19:44:51.742 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 19:44:51.743 NotebookApp] The Jupyter Notebook is running at:
[I 19:44:51.743 NotebookApp] http://(c693a40d34b7 or 127.0.0.1):8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab
[I 19:44:51.743 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 19:44:51.753 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
    Or copy and paste one of these URLs:
        http://(c693a40d34b7 or 127.0.0.1):8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

但是當我嘗試在 Chrome 上打開 Jupyter notebook 時:

file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
or
http://c693a40d34b7:8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

上面寫着找不到文件或無法訪問該站點。 我究竟做錯了什么?

我必須做的是使用命令獲取 docker-machine 的 IP 地址:

docker-machine ip

然后使用我得到的ip而不是命令中給出的ip:

Or copy and paste one of these URLs:
    http://(c693a40d34b7 or 127.0.0.1):8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
或者
http://c693a40d34b7:8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

這只是意味着如果您在容器中打開瀏覽器,則可以執行上述操作。

當您在容器中啟動它並想在主機或其他機器上打開瀏覽器時,您肯定需要做一些更改,在您的情況下應該是下一個:

http://$(YOUR_DOCKER_HOST_IP):8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

如果只是在 docker 主機上打開瀏覽器,那么也可以使用:

http://localhost:8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

或者

http://127.0.0.1:8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

如果其他電腦需要訪問,你仍然需要指定docker主機ip。

這是對我有用的:

從另一個終端運行以下命令:

$ sudo docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                     NAMES
9137012fbde0        jupyter/base-notebook   "tini -g -- start-no…"   13 minutes ago      Up 13 minutes       0.0.0.0:10000->8888/tcp   happy_napier

正如@atline 提到的,如果你在容器中打開瀏覽器,你可以點擊終端上的 url。 但是很可能您的瀏覽器沒有在 docker 中運行,並且您想從非 Dockerized 瀏覽器訪問 Dockerized jupyter。

在您的 url 中更改主機和端口,如下所示:

http://(c693a40d34b7 or 127.0.0.1):8888/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

將改為:

http://0.0.0.0:10000/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab

docker-machine ip對我不起作用,但它幫助我思考如何啟動我的 docker 守護進程。

如果您的 docker 守護進程通過 minikube 運行,您可以使用以下命令獲取 minikube 集群的 ip addr

minikube ip

使用從中獲得的 ip addr 代替 127.0.0.1。

嘗試在運行新容器時將可選設置中的端口配置更改為端口 80,並使用http://127.0.0.1/?token=2e31ab3088fcf6a707480d456152c993606f26164fcc99ab 調用(消除給定地址中的端口 8888,因為 80 是默認值)。 那對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM