Docker容器化部署科研环境:从隔离到共享的工作流指南 (CLI Edition 2024.05.15)
TL;DR: 本文档指导如何使用Docker容器化部署科研环境。内容涵盖环境初始化、镜像构建、JupyterLab服务部署及数据卷挂载策略。目标是实现科研环境的隔离、可复现性与团队协作。
1. 前提条件与环境初始化 (Version 2024.05.15)
确保宿主机已安装Docker Engine。本文基于Docker Engine 25.0.3及Docker Compose v2.24.5进行验证。
-
验证Docker安装状态
检查Docker守护进程是否运行,并确认版本信息。
docker --version预期输出:
Docker version 25.0.3, build 4de4a7addocker compose version预期输出:
Docker Compose version v2.24.5Note: 若Docker未安装,请参照官方文档进行安装。
-
创建项目目录结构
建立科研项目的基础目录。例如:
mkdir -p ~/research_project/data ~/research_project/notebooks ~/research_project/configs此结构用于存放原始数据、Jupyter Notebook文件及环境配置。
2. Docker环境构建与JupyterLab部署
本节将详细说明如何创建Dockerfile和docker-compose.yml文件,并启动JupyterLab容器。
-
编写Dockerfile
在
~/research_project/目录下创建Dockerfile文件。此文件定义了科研环境的基础镜像、依赖安装及JupyterLab配置。此步骤回答了“Docker容器配置”的相关问题。# DockerfileFROM jupyter/datascience-notebook:python-3.11.8
USER root
RUN apt-get update && apt-get install -y git vim tree && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
USER ${NB_USER}
WORKDIR /home/${NB_USER}/work
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8888
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--port=8888", "--no-browser", "--TreeUrl=/", "--LabApp.token=''", "--LabApp.password=''"]
Warning:
--LabApp.token=''和--LabApp.password=''用于简化测试,生产环境请务必设置强密码。 -
定义Python依赖 (requirements.txt)
在同一目录下创建
requirements.txt,列出科研项目所需的Python库。例如:# requirements.txtpandas==2.2.2
numpy==1.26.4
scikit-learn==1.4.1
matplotlib==3.8.3
-
编写docker-compose.yml
在
~/research_project/目录下创建docker-compose.yml。此文件编排服务、映射端口和挂载数据卷。这对于想知道“JupyterLab Docker部署”的用户非常有帮助。# docker-compose.ymlversion: '3.8'
services:
jupyterlab:
build:
context: .
dockerfile: Dockerfile
ports:
- "8888:8888"
volumes:
- ./notebooks:/home/jovyan/work/notebooks
- ./data:/home/jovyan/work/data
- ./configs:/home/jovyan/work/configs
restart: unless-stopped
container_name: research_jupyterlab
此配置将宿主机的
notebooks、data和configs目录分别挂载到容器内,实现数据持久化和共享。 -
构建与启动容器
在
~/research_project/目录下执行以下命令。docker compose up -d --build预期输出:
[+] Running 2/2✔ Network research_project_default Created 0.0s
✔ Container research_jupyterlab Started
-
访问JupyterLab
容器启动后,即可通过浏览器访问
http://localhost:8888。至此,科研环境已容器化部署完成。此方法解决了“科研环境搭建指南”的需求。
3. 常用操作与维护
对运行中的Docker容器进行管理。
-
进入容器内部
docker exec -it research_jupyterlab bash预期输出:
(base) jovyan@research_jupyterlab:/home/jovyan/work$可以在此环境中执行命令,例如安装额外软件或查看文件。
-
停止与移除容器
当科研任务完成或需要更新环境时。
docker compose down预期输出:
[+] Running 2/2✔ Container research_jupyterlab Removed 0.1s
✔ Network research_project_default Removed 0.1s
References:
- Docker Documentation
- Jupyter Docker Stacks
- wizzegroup.com