前言
Docker是一个非常强大的工具,可以帮助我们快速部署和运行各种应用。在本文中,我将分享如何使用Docker和Docker Compose创建并运行一个包含Python和JavaScript内核的JupyterLab。
配置文件
首先,我们来看docker-compose.yml
文件的内容:
version: '3.7'
services:
jupyterlab:
# image: jupyter/base-notebook:latest
build:
context: ./jupyterlab # Dockerfile 所在的目录,这里假设它在与 docker-compose.yml 文件相同的目录中
dockerfile: Dockerfile # Dockerfile 文件的名称
ports:
- "18888:8888"
restart: unless-stopped
volumes:
- ./data:/home/jovyan/work
environment:
- JUPYTER_ENABLE_LAB=yes
- JUPYTER_TOKEN=happen
# - JUPYTER_RUNTIME_DIR=/tmp/jupyter_runtime
- NB_UID=1000
- NB_GID=1000
- CHOWN_HOME=yes
- CHOWN_HOME_OPTS=-R
command: start-notebook.sh --notebook-dir='/home/jovyan/work'
# --NotebookApp.token='' 可以去掉密码
volumes:
data: {}
上述配置文件定义了一个服务jupyterlab
,并指定了构建Docker镜像所需的上下文和Dockerfile。同时,我们还定义了一些其他参数,如端口映射、持久化存储卷等。
接下来,我们来看jupyterlab/Dockerfile
文件的内容:
# 使用官方的Jupyter基础镜像
FROM jupyter/base-notebook:latest
# 使用root用户安装必要的软件包
USER root
# 修改APT源为阿里云源以加速下载
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list && \
apt-get update && \
apt-get install -y wget curl build-essential && \
# 下载并安装Node.js
wget https://npmmirror.com/mirrors/node/v18.16.1/node-v18.16.1-linux-x64.tar.xz && \
tar -xf node-v18.16.1-linux-x64.tar.xz && \
mv node-v18.16.1-linux-x64 /usr/local/node && \
rm node-v18.16.1-linux-x64.tar.xz && \
# 将Node.js添加到PATH
echo 'PATH="/usr/local/node/bin:$PATH"' >> /etc/environment && \
# 设置 npm 的镜像为淘宝的镜像
npm config set registry https://registry.npm.taobao.org && \
# 安装JavaScript内核
npm install -g --unsafe-perm ijavascript && \
# 运行 ijsinstall 命令安装 JavaScript 内核
ijsinstall --install=global && \
# 预先创建所需的目录并赋予适当的权限
mkdir -p /home/jovyan/.local/share/jupyter/runtime && \
chown -R $NB_UID:$NB_GID /home/jovyan/.local && \
# 清理APT缓存
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 切换回原来的用户
USER $NB_UID
# 设置 pip 的镜像为清华的镜像,并安装 numpy
ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
ENV PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn
# Install PyTorch
RUN pip install torch==1.13.0+cpu torchvision -f https://download.pytorch.org/whl/torch_stable.html && \
pip install d2l && \
# 验证内核安装成功
jupyter kernelspec list
# 清理pip缓存
# rm -rf /root/.cache/pip
在这个Dockerfile中,我们从jupyter/base-notebook:latest
基础镜像开始,并进行了以下操作:
- 切换到root用户。
- 修改APT源为阿里云,加速软件包下载。
- 安装Node.js。
- 安装JavaScript内核。
- 切换回Jupyter默认用户。
- 设置pip为清华大学的镜像源。
- 安装PyTorch和其他Python库。
使用方法
- 将上述的
docker-compose.yml
和jupyterlab/Dockerfile
保存到相同的目录中。 - 在命令行中,进入该目录,并运行以下命令启动JupyterLab:
docker-compose up
- 打开浏览器,访问
http://localhost:18888
,使用happen
作为token登录。
结论
使用Docker和Docker Compose可以非常简单地部署和运行各种应用,特别是像JupyterLab这样的数据科学工具。希望本文能够帮助你更容易地使用这些工具,从而提高你的工作效率。