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

通过EC2 UserData部署Docker化Jupyter Notebook访问异常问题

解决AWS EC2 Ubuntu实例公网访问Jupyter Notebook异常的问题

排查及修复步骤

1. 检查EC2安全组规则

这是公网访问失败最常见的原因:

  • 登录AWS控制台,进入目标EC2实例详情页,找到关联的安全组
  • 编辑入站规则,添加一条规则:
    • 类型:HTTP(TCP)
    • 端口范围:80
    • 来源:0.0.0.0/0(测试场景用,生产环境建议限制特定IP段)
  • 保存规则后重新尝试访问公网IP

2. 放行Ubuntu系统防火墙(ufw)流量

Ubuntu默认可能启用ufw,需手动放行80端口:

# 查看防火墙当前状态
sudo ufw status
# 放行80端口的TCP流量
sudo ufw allow 80/tcp
# 重新加载防火墙规则
sudo ufw reload

3. 验证容器运行状态与端口映射

  • 登录EC2实例后,检查容器是否正常运行:
    docker ps
    
    确认输出中存在jupyter镜像的容器,且端口映射为0.0.0.0:80->80/tcp
  • 如果容器未启动,查看日志排查错误:
    # 替换<container-id>为实际容器ID或名称
    docker logs <container-id>
    
  • 查看UserData执行日志,确认镜像构建和容器启动流程是否正常:
    cat /var/log/cloud-init-output.log
    

4. 处理Jupyter认证问题

Jupyter默认需要令牌或密码登录,即使端口连通也需正确认证:

  • 从容器日志中获取访问令牌:
    docker logs <container-id>
    
    日志中会包含类似http://0.0.0.0:80/?token=abcdef123456...的内容
  • 在浏览器中访问http://<你的EC2公网IP>:80/?token=xxx,替换xxx为日志中的令牌字符串

5. 优化UserData脚本(移除冗余步骤)

原脚本中在主机安装Jupyter的步骤属于冗余操作,可简化为:

#!/bin/bash

# 更新包列表并安装Docker
apt-get update -y
apt-get install -y docker.io

# 启动Docker并设置开机自启
systemctl start docker
systemctl enable docker

# 创建Dockerfile
cat <<EOF > Dockerfile
FROM python:3.9
WORKDIR /app
RUN pip install --no-cache-dir jupyter
EXPOSE 80
CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=80", "--no-browser", "--allow-root"]
EOF

# 构建镜像并运行容器
docker build -t jupyter .
docker run -d -p 80:80 jupyter

echo "Jupyter Notebook is running. Access it at http://<your-ec2-public-ip>:80"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:35:07