You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker端口映射后无法通过localhost:9999连接容器Jupyter服务

问题根因

你遇到的连接失败是三个配置问题叠加导致的:

  • Jupyter Notebook默认仅监听容器内部的127.0.0.1回环地址,没有绑定到所有网络接口0.0.0.0,Docker的端口转发规则无法将宿主机的请求转发到仅监听回环地址的服务。
  • 端口映射不匹配:Jupyter默认服务端口是8888,你启动容器时配置的是宿主机9999端口转发到容器的9999端口,容器内9999端口没有任何服务在监听。
  • 访问协议错误:你用https://前缀访问服务,但默认启动的Jupyter是HTTP服务,没有配置TLS证书的情况下,HTTPS请求会被直接重置,返回连接关闭错误。

另外你的Dockerfile存在冗余配置:重复执行了两次pip install -r requirements.txt,定义的PYTHON_PACKAGES环境变量从未被实际使用,会额外增加镜像构建时长和镜像体积。

修复步骤
  1. 修正Dockerfile配置,调整Jupyter启动参数,删除冗余内容:
FROM python:3.8

COPY requirements.txt .
RUN pip install -r requirements.txt
RUN pip install jupyter

# 启动Jupyter时绑定所有网卡、指定服务端口为9999、关闭容器内无意义的自动拉起浏览器逻辑
CMD ["jupyter", "notebook", "--allow-root", "--ip=0.0.0.0", "--port=9999", "--no-browser"]

如果你不想改Jupyter的默认端口,也可以保留Jupyter的8888默认端口,后续启动容器时把端口映射改成9999:8888即可。

  1. 重新构建镜像:
docker build -t tdnlptools .
  1. 用你原来的端口映射命令启动容器即可:
docker run -dp 9999:9999 tdnlptools
  1. 访问时改用HTTP协议,地址为http://localhost:9999。第一次登录需要输入鉴权token,执行以下命令查看容器日志即可拿到token:
# 把<c26b647a1403>替换成你实际运行的容器ID
docker logs c26b647a1403

日志中会输出带token的完整访问地址,复制token填入登录页输入框即可正常使用Jupyter服务。


内容的提问来源于stack exchange,提问作者Ja4H3ad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 07:09:18