简介
JupyterLab是Jupyter Notebook的下一代版本,提供了更强大的用户界面和功能,可用于更复杂的工作流程和项目。
安装
docker安装
在 Docker 中为 pip 指定国内镜像源
在 Dockerfile 中使用环境变量
这是最简洁、最直接的方法。通过在 Dockerfile 中设置 PIP_INDEX_URL 环境变量,可以为容器内所有的 pip install 命令全局指定镜像源。
步骤 1: 修改 Dockerfile
在你的 Dockerfile 中,在执行 pip install 命令之前,添加 ENV 指令来设置环境变量。
# 使用官方的 Jupyter 镜像作为基础
FROM jupyter/minimal-notebook
# --- 开始设置 pip 源 ---
# 设置中科大的 PyPI 镜像源
ENV PIP_INDEX_URL https://pypi.mirrors.ustc.edu.cn/simple
# --- 结束设置 pip 源 ---
# 设置工作目录
WORKDIR /home/jovyan/work
# 复制 requirements.txt 并安装依赖
# 因为上面已经设置了环境变量,所以这里的 pip install 会自动使用中科大源
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 容器启动时执行的命令
CMD ["start-notebook.sh", "--NotebookApp.token=''"]
解释:
ENV PIP_INDEX_URL https://pypi.mirrors.ustc.edu.cn/simple: 这行命令告诉 pip,以后安装任何包时,都去中科大的镜像源地址查找,而不是去官方的PyPI源。- 这个设置对容器内所有用户和所有
pip命令都有效。
步骤 2: 构建和启动
现在,你可以像之前一样使用 docker-compose 来构建和启动服务。
# 确保在 docker-compose.yml 所在目录
docker compose up -d --build
--build参数会强制重新构建镜像,以应用你对Dockerfile的修改。
如何验证是否生效?
你可以进入正在运行的容器,手动执行一个 pip install 命令,查看其输出日志。
- 进入容器:
docker exec -it my-jupyter-container /bin/bash
(请将 my-jupyter-container 替换为你的容器名)
- 在容器内执行 pip 命令:
pip install requests -v
-v(verbose) 参数会显示详细的安装过程。
-
查看输出:
在输出的日志中,你应该能清晰地看到类似下面这样的行,表明 pip 正在从中科大源下载包:
Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple Collecting requests Downloading https://pypi.mirrors.ustc.edu.cn/packages/.../requests-2.31.0-py3-none-any.whl (62 kB)pip安装
使用
pip或conda等均可安装
pip示例:pip install jupyterlabconda示例:
conda install -c conda-forge jupyterlab启动
安装完成后, 使用
jupyter lab即可启动, 默认端口为8888, 浏览器访问http://localhost:8888/lab就能打开, 进入界面需要输入token才行, 后台日志中会有类似http://localhost:8888/lab?token=af6sg...的日志, 其中token的值就是界面访问所需要的.改进
以上启动方式虽然能够访问, 但是存在如下问题:
-
不能轻易关闭终端, 否则jupyter进程将被终止
-
jupyter一般是给远程用户访问的, 因此需要指定允许远程访问:--ip=0.0.0.0, 另外大概率会安装在类似ubuntu server这种不带界面的系统中, 可以指定参数--no-browser -
容易造成端口冲突(冲突时端口号会自增), 因此最好指定一个固定的端口
-
jupyter启动默认的工作空间是执行启动命令时所在文件夹, 最好指定一个固定的地方, 比如:~/.jupyter/workspace -
重复执行相同的启动命令, 会因为端口号自增而产生多个实例, 而这一般是不必要的
基于以上问题, 我们可以写一个启动脚本, 统一解决上述问题
创建用户
# 创建jupyter用户并设置登录密码 sudo useradd -m -s /bin/bash jupyter && sudo passwd jupyter # 将jupyter加入到sudo群组 sudo usermod -aG sudo jupyter # 登录jupyter用户 su - jupyter配置脚本
cat << "JUPYTER" > ~/start.sh # 创建必要目录 mkdir -p ~/.jupyter/workspace ~/.jupyter/venv ~/.jupyter/scripts # 创建虚拟环境 python3 -m venv ~/.jupyter/venv source ~/.jupyter/venv/bin/activate # 安装jupyterlab pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/ pip install jupyterlab echo "已安装JupyterLab" # 生成配置文件 yes | jupyter lab --generate-config --allow-config echo "已生成配置文件" # 修改配置文件 # cat > ~/.jupyter/jupyter_notebook_config.py <<CONFIG # c.ServerApp.ip = '0.0.0.0' # c.ServerApp.port = 8888 # c.ServerApp.root_dir = '/home/jupyter/.jupyter/workspace' # c.ServerApp.allow_remote_access = True # c.ServerApp.open_browser = False # CONFIG # echo "已配置JupyterLab参数" # 创建启动脚本 cat > ~/.jupyter/scripts/start_jupyter.sh <<SCRIPT #!/bin/bash # 检查端口是否被占用 if ss -tuln | grep -q ":8888 "; then echo "JupyterLab已在运行(端口8888)" exit 0 fi # 激活虚拟环境并启动 source /home/jupyter/.jupyter/venv/bin/activate jupyter lab --ip=0.0.0.0 --port=8888 --notebook-dir='/home/jupyter/.jupyter/workspace' SCRIPT # 赋予执行权限 chmod +x ~/.jupyter/scripts/start_jupyter.sh echo "已创建启动脚本" nohup ~/.jupyter/scripts/start_jupyter.sh 2>&1>~/.jupyter/jupyter.log & JUPYTER chmod +x ~/start.sh设置访问密码(可选)
# 安装jupyter-core sudo apt install jupyter-core # 设置Jupyter密码(按提示操作) echo "请设置Jupyter访问密码:" jupyter server password可以不设置, 首次访问界面时, 会要求根据初始
token进行密码设置启动
~/start.sh
评论