一、创建容器
可以先查看宿主机
8888
端口是否被占用,无输出,表明端口未被任何进程占用,如果有LISTEN
,可能在创建容器的时候需要更换宿主机端口,例如-p 8890:8888
,这里以8890
为例。netstat -tuln | grep 8888
关于容器的具体内容不过多介绍,在创建容器的时候注意要将宿主机的
8888
端口映射到容器的8888
端口 (Jupyter 默认端口),如果宿主机8888
端口被占用,那么需要修改宿主机映射的端口,比如-p 8890:8888
。docker run -it --name jupyter_container -p 8888:8888 镜像名:版本号 /bin/bash
启动容器,准备创建虚拟环境。
docker exec -it jupyter_container bash
二、Conda安装
这里以
miniconda
为例,选择X86架构,通过wget
获取安装脚本。wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
增加可执行权限。
chmod +x Miniconda3-latest-Linux-x86_64.sh
运行安装脚本,根据提示
yes/no
,然后注意一下安装路径,按需修改,在最后一步输入no
。./Miniconda3-latest-Linux-x86_64.sh
配置环境变量,打开
~/.bashrc
,在文件最后增加如下内容并将路径修改为刚才的安装路径之后source ~/.bashrc
。export PATH="/路径/miniconda3/bin:$PATH"
激活环境变量之后,执行
conda init
,然后重启docker即可。docker restart jupyter_container
三、安装 Jupyter
创建虚拟环境
jupyter
conda create -n jupyter python=3.9
激活虚拟环境。
conda activate jupyter
因为我们使用的是
miniconda
,轻量版不自带jupyter
,所以需要我们手动安装。pip install jupyter
如果没有
jupyter lab
,也可以手动安装。pip install jupyterlab
四、启动 Jupyter
启动
Jupyter
,需要增加如下参数:--ip=0.0.0.0:
绑定所有网络接口,允许外部访问 (很重要) ;--port=8888:
指定 Jupyter 监听的端口,与容器端口映射一致;容器中一般是 root 用户登录,--allow-root:
允许以 root 用户运行,容器中一般也没有浏览器,--no-browser:
防止 Jupyter 尝试打开浏览器。jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root xxxx.ipynb # 同理 jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root xxxx.ipynb
启动后,选择任意一个链接在浏览器中打开即可。
如果在创建容器的时候,没有使用默认的端口映射,比如使用
-p 8890:8888
进行映射,在拷贝链接的时候需要在宿主机浏览器中将端口号修改为8890
即可正常打开 jupyter 文件。
浏览器中内容如下,使用
jupyter lab
也是同理,可以在指令后指定打开的具体目录。
Jupyter 的汉化,使用如下指令安装汉化包之后,启动
Jupyter
,找到setting
,然后选择language
,选择中文,之后重启内核。pip install jupyterlab-language-pack-zh-CN
五、注册内核来使用虚拟环境
安装
ipykernel
用于管理 Jupyter 内核。pip install ipykernel
注册
jupyter
(虚拟环境名)为 Jupyter 可用内核vienv
(内核名,可变),之后启动 Jupyter 就可以使用注册后的虚拟环境(内核)运行cell
。python -m ipykernel install --user --name jupyter --display-name "vienv"
查看已注册的内核。
jupyter kernelspec list
删除注册的内核。
jupyter kernelspec uninstall 内核名称
小结
关于Docker以及Jupyter的详细操作这里不过多涉及,如有其他问题,欢迎在评论区讨论,谢谢!!!