【问题标题】:docker jupyter notebook address never responds / times outdocker jupyter notebook 地址从不响应/超时
【发布时间】:2018-12-19 04:56:46
【问题描述】:

尝试在 docker 映像 (https://hub.docker.com/r/tensorflow/tensorflow) 上使用 jupyter-notebook,但在浏览器中使用端口转发地址时出现问题,而 (chrome) 主页卡在说 Waiting for 127.0.0... 直到超时.

正在运行的 docker 命令看起来像

➜  ~ docker run -it -p 8888:8888 --rm tensorflow/tensorflow:latest-devel-gpu-py3 jupyter-notebook --ip 0.0.0.0 --no-browser --allow-root
[I 04:26:44.023 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 04:26:44.042 NotebookApp] Serving notebooks from local directory: /root
[I 04:26:44.043 NotebookApp] The Jupyter Notebook is running at:
[I 04:26:44.043 NotebookApp] http://(f1afd4b163fd or 127.0.0.1):8888/?token=5a838cefbd58822ce3de5a9ab00ed724bc6f9e048017125a
[I 04:26:44.043 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 04:26:44.043 NotebookApp] 

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://(f1afd4b163fd or 127.0.0.1):8888/?token=5a838cefbd58822ce3de5a9ab00ed724bc6f9e048017125a

(注意,也试过docker run -it -p 8888:8888 --rm tensorflow/tensorflow:latest-devel-gpu-py3 /run_jupyter.sh --allow-root类似的挂起结果)。

查看docker ps 节目

➜  ~ docker ps
CONTAINER ID        IMAGE                                        COMMAND                  CREATED              STATUS              PORTS                              NAMES
2114609d6d9d        tensorflow/tensorflow:latest-devel-gpu-py3   "jupyter-notebook --…"   About a minute ago   Up About a minute   6006/tcp, 0.0.0.0:8888->8888/tcp   mystifying_liskov

通过 curl 节目检查响应

➜  ~ curl -v http://127.0.0.1:8888/?token=5a838cefbd58822ce3de5a9ab00ed724bc6f9e048017125a
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0)
> GET /?token=5a838cefbd58822ce3de5a9ab00ed724bc6f9e048017125a HTTP/1.1
> Host: 127.0.0.1:8888
> User-Agent: curl/7.47.0
> Accept: */*
> 

<at this point just hangs until I ctl+C out>


* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer

并检查端口显示

➜  ~ sudo netstat -plnt
[sudo] password for me: 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1512/sshd       
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2485/cupsd      
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      2284/smbd       
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1502/mysqld     
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      2284/smbd       
tcp        0      0 127.0.0.1:5037          0.0.0.0:*               LISTEN      8558/adb        
tcp        0      0 127.0.0.1:6000          0.0.0.0:*               LISTEN      1006/unicorn.rb --h
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1954/monitorix-http
tcp6       0      0 :::22                   :::*                    LISTEN      1512/sshd       
tcp6       0      0 ::1:631                 :::*                    LISTEN      2485/cupsd      
tcp6       0      0 :::445                  :::*                    LISTEN      2284/smbd       
tcp6       0      0 :::8888                 :::*                    LISTEN      32491/docker-proxy
tcp6       0      0 :::139                  :::*                    LISTEN      2284/smbd       
tcp6       0      0 :::80                   :::*                    LISTEN      1846/apache2 

我看到的其他帖子似乎是人们根本没有转发 jupyter 期望使用的端口,但这似乎不是问题所在。无论使用什么 docker 映像(因此不仅仅是那个特定的映像),都会发生这种情况。如果有人对它可能是什么或任何调试建议有任何想法,将不胜感激。

【问题讨论】:

  • 你好,我使用了你的 docker run 执行,它在标准 ubuntu 18.04 服务器上运行,也许防火墙(ufw 或 iptables)阻止了对容器的访问?我从 curl 得到以下响应:
  • @lmtx 感谢您提供数据点,我使用的是 Ubuntu 16.04,但在无法从任何其他 docker 容器访问端口转发的 jupyter 实例后,开始怀疑与防火墙相关的问题。跨度>

标签: docker jupyter-notebook


【解决方案1】:

解决了问题。

  1. 重新启动主机(注意,这是安装 docker 后第一次重新启动,但 仍然没有工作,直到...)
  2. Ran sudo /etc/init.d/docker restart(这样做纯粹是基于在此处浏览故障排除文档时的预感:https://docs.docker.com/toolbox/faqs/troubleshoot/#configure-http-proxy-settings-on-docker-machines)。
  3. 然后发布问题中的docker run ... 语句起作用,现在可以到达主机上的转发端口并且可以curl 地址。一个 Ubuntu 通知弹出说“有线连接建立”。

这是一个有点蹩脚的答案,但它对我有用。奇怪的是,有时似乎必须重新运行 sudo /etc/init.d/docker restart 语句才能打开 docker 容器。将尝试更多地了解这里到底发生了什么,但如果有更多经验的人认为他们知道可能发生了什么,请告诉我们。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 2019-07-02
    • 1970-01-01
    • 2017-06-17
    • 2020-10-17
    • 2019-11-25
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多