我使用以下命令安装了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服务器正在此端口上运行。
我在做什么错? (关于访问以及端口映射)
谢谢。
答案 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