【问题标题】:Problem accessing jupyter notebook from Docker Toolbox Container从 Docker Toolbox Container 访问 jupyter notebook 时出现问题
【发布时间】:2020-03-12 11:15:53
【问题描述】:

我刚刚使用 Docker 工具箱设置了一个 Docker 容器,并在容器内运行了 jupyter notebook

docker run --name container -v %somedirectory%:%someotherdir% -d -p 127.0.0.1:8888:8888 quay.io/fenicsproject/stable:2017.2.0 'jupyter-notebook --ip=0.0.0.0'

之后我可以查看容器的日志以查看URL and token that jupyter notebook created

如果我现在继续将链接复制到我的浏览器,它将无法连接到 localhost。访问 127.0.0.1 也不行。

由于 Docker Toolbox 依赖于 Virtual Box VM,我还尝试使用 VM 的 IP 地址,在本例中为 192.168.99.100:2376。根据 Kitematic UI,这是 docker-machine 发布的 IP:Port 组合,实际上这不会导致一般连接错误。相反,浏览器的输出是:

Client sent an HTTP request to an HTTPS server.

从现在开始,我真的不知道该怎么办了。这个错误是什么意思?使用虚拟机的 IP 地址是否有意义?最重要的是:我还能做些什么才能最终访问 jupyter notebook?

PS:我也尝试了线程 Can't access jupyter notebook from dockerAccess Jupyter notebook running on Docker container 中提出的建议,但不幸的是,它们中的任何一个都无法正常工作。

希望有人能提供帮助,非常感谢您。

【问题讨论】:

  • 我怀疑,在 Docker Toolbox 中,docker run -p 127.0.0.1:... 不会使服务可以从主机访问(出于同样的原因,容器进程无法绑定到 127.0.0.1)。删除此命令行片段并访问docker-machine ip 地址和发布的端口(@98​​7654328@)是否有效?

标签: docker jupyter-notebook


【解决方案1】:

您需要做两件事来完成这项工作:

  1. 去掉端口映射的127.0.0.1部分; docker run -p 8888:8888 ...
  2. 用发布的端口连接docker-machine ip地址; http://192.168.99.100:8888

Docker Toolbox 在单独的 Linux 虚拟机中运行 Docker。任何docker run -p 选项都将从该VM 的角度进行解释。如果您docker run -p 127.0.0.1:...,那么发布的端口将绑定到 VM 的 lo0 localhost 接口,因此无法从 VM 外部访问。

发布端口后,您需要连接到该特定端口。端口 2376 通常是访问 VM 内的 Docker 守护程序的端口,具有相互 TLS 安全性;你只需要手动docker 命令。要访问在 VM 内运行的服务,您需要连接到已发布的端口(@98​​7654329@ 选项中的第一个数字)。

【讨论】:

    猜你喜欢
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多