Docker:无法访问具有给定IP地址/令牌的(Jupyter Data Science)Docker容器?为什么端口错误?

时间:2018-12-26 16:08:07

标签: docker jupyter-notebook

我使用以下命令安装了Jupiter / Data Science docker容器:docker run -p 7777:8888 --name DataS jupyter/datascience-notebook

我收到此回复:

  

首次连接时,将此URL复制/粘贴到浏览器中,       用令牌登录:       http://(c623e69fe641或127.0.0.1):8888 /?token = 0bf2a07b1dcd957f616e73941f5dc5dba4cd01d5341b21fd

在Kinematik中,我得到了相同的信息。

但是,当我将地址插入浏览器127.0.0.1:8888 oder :7777时,总是会收到一个错误,即浏览器无法建立任何连接。 (我尝试了几种浏览器)

第二点是,我认为我通过此选项-p 7777:8888获得了本地端口7777。为什么我总是一直把8888作为本地端口? 我也尝试过-p 8800:7777,但它给了我相同的结果:-(

我要更改此设置的原因是我的本地apache Web服务器正在此端口上运行。

我在做什么错? (关于访问以及端口映射)

谢谢。

1 个答案:

答案 0 :(得分:1)

问题在联网模式下。快速解决方案-使用--network=host。在这种情况下,您不需要端口转发,也不需要IP地址或主机名-Docker容器仅使用主机网络:

docker run --network=host --name DataS jupyter/datascience-notebook

然后使用localhost连接:

http://localhost:8888

host网络模式的缺点是缺乏容器隔离,在您的情况下可能不需要。

您所遇到的情况很深:

  • 您的服务在容器中启动,打开端口8888。但是不需要知道它在容器内,这就是为什么它要求您使用http://localhost:8888进行连接的原因。实际上,它可以工作,但只能从容器内部

  • 在您的HOST PC上,将容器的端口8888映射到7777,但是一旦输入容器的IP地址或主机名,便无法使用localhost。 / p>

如果由于安全问题或端口冲突而不想使用host网络,只需使用容器的IP地址进行连接。 启动容器:

docker run -p 7777:8888 --name DataS jupyter/datascience-notebook

获取容器的ip:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' DataS

连接http://[container ip]:7777