服务器部署Jupyter Notebook遇ERR_CONNEXION REFUSED错误求助
解决Jupyter Notebook Docker容器访问被拒绝的问题
嘿,咱们先梳理下你操作里的几个小问题,然后一步步搞定这个访问被拒的情况:
1. 先纠正一个多余操作:镜像自带Jupyter,不用再装
jupyter/scipy-notebook这个官方镜像本身就预装了完整的Jupyter环境,你进入容器后再跑pip3 install jupyter完全没必要,甚至可能覆盖原有版本导致奇怪的冲突。直接用镜像自带的启动流程就好。
2. 修正Docker启动命令(关键!)
你之前的启动命令缺了几个核心参数,导致容器里的服务没法被外部正常访问。试试这个正确的启动命令:
docker run -d -p 8888:8888 --name my-jupyter jupyter/scipy-notebook:33add21fab64 start-notebook.sh --NotebookApp.allow_root=True --NotebookApp.ip=0.0.0.0
给你解释下这些参数:
-d:让容器在后台运行,避免你关掉终端后容器就停了--name my-jupyter:给容器起个好记的名字,后续管理更方便start-notebook.sh:镜像自带的启动脚本,会自动处理token生成、环境配置这些事儿--NotebookApp.allow_root=True:允许用root权限运行(镜像默认用jovyan用户,要是你需要root操作就加这个)--NotebookApp.ip=0.0.0.0:让Jupyter监听容器内所有网卡,确保外部能连上
3. 获取正确的访问链接和Token
容器启动后,跑这条命令看日志拿Token:
docker logs my-jupyter
日志里会有类似这样的链接:
http://127.0.0.1:8888/lab?token=xxxxxxxxx...
把链接里的127.0.0.1换成服务器的IP172.172.10.10,在本地浏览器打开这个地址就行。
4. 排查网络连通性(如果还是不行)
要是按上面的来还是显示连接被拒,得检查这几点:
- 服务器的防火墙/安全组有没有开8888端口?得确保入站规则允许你的本地IP访问8888端口
- 本地能不能ping通
172.172.10.10?要是ping不通,先解决服务器的网络可达性问题 - 看看容器是不是正常运行:
docker ps,确保容器状态是Up - 进容器里测下端口有没有被监听:
docker exec -it my-jupyter bash,然后跑netstat -tulpn | grep 8888,应该能看到Jupyter在监听0.0.0.0:8888
5. 要是你非得手动启动(不推荐)
如果你就是想自己进容器启动Jupyter,那得保证容器启动方式和启动命令都对:
- 先启动容器并映射端口(用交互模式):
docker run -it -p 8888:8888 --name my-jupyter jupyter/scipy-notebook:33add21fab64 bash
- 进容器后直接启动(别再pip装了!):
jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
然后复制日志里的链接,替换IP后访问就行。
内容的提问来源于stack exchange,提问作者biwia
相关产品推荐
相关产品推荐

