Docker部署Jupyter Notebook:零基础也能
Docker部署Jupyter Notebook:零基础也能搞定的容器化环境
使用Docker部署Jupyter Notebook是目前最省心的方式之一,不用在服务器上手动配置Python环境和各种依赖,一条命令就能拉起完整的交互式编程环境。
本文面向零基础用户,从准备工作到最终访问,每一步都写清楚命令和注意事项,跟着做就能跑起来。
第一步:确认服务器已安装Docker
在开始之前,确保你的服务器已经装有Docker。
如果还没有安装,可以用下面的一键脚本(适用于CentOS 7+/Ubuntu 20.04+):
curl -fsSL https://get.docker.com | bash -s docker安装完成后,启动Docker服务并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker验证Docker是否正常工作:
docker version看到Client和Server的版本信息就说明环境就绪了。
注意:如果你是用普通用户执行命令,需要加sudo,或者将当前用户加入docker组。第二步:拉取Jupyter镜像并启动容器
Docker Hub上官方提供的镜像有好几种,这里以jupyter/base-notebook为例(体积较小,适合入门)。
执行以下命令拉取最新版:
docker pull jupyter/base-notebook:latest拉取完成后,运行容器。
最简单的启动方式:
docker run -p 8888:8888 --name my-jupyter jupyter/base-notebook-p 8888:8888:将容器内的8888端口映射到主机的8888端口,这样你就能通过http://服务器IP:8888访问。--name my-jupyter:给容器起个名字,方便后续管理。
启动后,控制台会打印一串包含token的URL,像这样:
http://127.0.0.1:8888/?token=abc123...复制这个token,在你本机浏览器访问http://你的服务器公网IP:8888,输入token即可登录。
第三步:挂载数据卷保存你的工作文件
默认情况下,容器内创建的所有文件(.ipynb笔记本、上传的数据等)在容器删除后会丢失。
为了让文件持久保存,需要将主机上的一个目录挂载到容器的/home/jovyan/work(Jupyter工作目录)。
先创建主机上的数据目录:
mkdir -p /data/jupyter_work然后重新运行容器(加上数据卷挂载参数):
docker run -d \
-p 8888:8888 \
-v /data/jupyter_work:/home/jovyan/work \
--name my-jupyter jupyter/base-notebook-d:后台运行,不占用终端。-v:卷挂载,格式为主机路径:容器路径。
现在你在Jupyter里创建或上传的文件都会保存在/data/jupyter_work中,即使容器删除,数据也不会丢。
第四步:设置固定密码,告别每次查看token
每次启动容器都要从日志里找token很麻烦,可以预先设置一个固定密码。
使用以下命令生成密码(需要在容器内操作,但我们可以用一条命令直接生成):
# 先进入容器
sudo docker exec -it my-jupyter bash
在容器内执行
jupyter notebook password
按提示输入密码(比如:yourpass123),然后确认
退出容器后重启服务生效:
sudo docker restart my-jupyter现在访问http://你的服务器IP:8888,直接用设置的密码登录即可,不再需要token。
安全提示:如果服务器有公网IP,建议同时开启防火墙,只允许可信IP访问8888端口,或者通过Nginx反向代理加上HTTPS。
排错指南:常见问题与解决方案
- 无法访问8888端口:检查服务器防火墙是否放行了8888端口。阿里云/腾讯云等云服务商还需在安全组规则中添加入站端口。
- 容器启动后立刻退出:运行
docker logs my-jupyter查看错误日志,通常是端口被占用或挂载目录权限问题。尝试更换映射端口(如-p 8889:8888),或给挂载目录赋予777权限(测试用,生产环境需谨慎):
chmod 777 /data/jupyter_work- 忘记token:执行
docker logs my-jupyter,在输出的末尾可以找到token;或者进入容器用jupyter notebook list查看。 - 挂载目录后文件不显示:请检查
/data/jupyter_work目录是否为空,并确认容器内工作路径确实是/home/jovyan/work。 - 执行命令需要sudo:将当前用户加入docker组:
sudo usermod -aG docker $USER
newgrp docker重新登录后生效。
完成上述步骤后,你已经拥有了一个长期可用的Jupyter Notebook服务器,随时可以打开浏览器写代码、做数据分析。
如果后续需要更换镜像(如jupyter/scipy-notebook包含更多科学计算库),只需替换镜像名称并重建容器即可,数据卷里的文件不受影响。