Docker:无法使用给定的IP地址/令牌访问(jupyter data science)Docker容器?为什么港口错了?

Docker:无法使用给定的IP地址/令牌访问(jupyter data science)Docker容器?为什么港口错了?,docker,jupyter-notebook,Docker,Jupyter Notebook,我使用以下命令安装了Jupiter/Data Science docker容器:docker run-p 7777:8888--name DataS jupyter/datascience notebook 我得到的答复是: 首次连接时将此URL复制/粘贴到浏览器中, 要使用令牌登录,请执行以下操作: 或127.0.0.1):8888/?令牌=0bf2a07b1dcd957f616e73941f5dc5dba4cd01d5341b21fd 在Kinematick中,我得到了相同的信息 但是,当我

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

我得到的答复是:

首次连接时将此URL复制/粘贴到浏览器中, 要使用令牌登录,请执行以下操作: 或127.0.0.1):8888/?令牌=0bf2a07b1dcd957f616e73941f5dc5dba4cd01d5341b21fd

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

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

第二点是,我认为我可以通过这个选项获得本地端口7777。为什么我总是把8888作为本地端口? 我也尝试了
-p8800:7777
,但它给了我同样的结果:-(

我之所以要更改它,是因为我的本地apache web服务器正在这个端口上运行

我做错了什么?(关于访问和端口映射)


谢谢。

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

docker run --network=host --name DataS jupyter/datascience-notebook
然后使用
localhost
进行连接:

http://localhost:8888
主机
网络模式的缺点是缺少容器隔离,在您的情况下可能不需要

在你的情况下发生了什么:

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

  • 在您的主机pc上,您可以将容器的端口
    8888
    映射到
    7777
    ,但您不能在输入容器的IP地址或主机名后立即使用
    localhost

如果由于安全问题或端口冲突而不想使用主机,只需使用容器的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

谢谢。好的。不幸的是,一旦我的web服务器运行,我就会得到标准的php站点。因此,只要web服务器关闭,这就可以了。是否也有一个“慢速解决方案”?假设环境不是Docker Toolbox或Docker Machine,
http://localhost:7777
应该可以(使用映射端口,从同一主机上的浏览器调用).
docker inspect
查找容器专用IP地址显然不是最佳做法。不幸的是,它不起作用。唯一对我有效的docker容器是:tylerfowler/superset。但它在启动服务器之前运行一些配置脚本。你确定,
jupyter
链接到正确的接口,而不是
loc吗alhost
?我的意思是,当您启动服务时,您通常也会指定接口和端口,但接口应该是
0.0.0
,而不是
127.0.0.1
localhost
,以启用来自asideFound的连接: