遇到问题:
需要打包一个jupyter基础镜像,因团队使用的docker-compose,所以希望是用docker-compose来打包这个镜像。
解决方案
我们可以使用 Docker Compose 来定义和管理这个 Jupyter Notebook 容器。以下是使用 Docker Compose 来实现相同目标的步骤。
步骤一:创建项目目录
-
创建一个新的目录来存放你的 Dockerfile 和 Docker Compose 文件:
mkdir my_jupyter_project
步骤二:创建Dockerfile
-
在这个目录中创建一个
Dockerfile
文件:vim dockerfile
-
编辑
Dockerfile
文件,添加以下内容:# 使用官方的Python基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 安装Jupyter Notebook和常用的Python包 RUN pip install --no-cache-dir jupyter numpy pandas matplotlib scipy scikit-learn # 暴露Jupyter Notebook默认端口 EXPOSE 8888 # 启动Jupyter Notebook CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]
步骤三:创建docker-compose.yml文件
-
在同一个目录中创建一个
docker-compose.yml
文件:vim docker-compose.yml
-
编辑
docker-compose.yml
文件,添加以下内容:# docker-compose.yml version: '3.8' services: jupyter: build: . ports: - "8888:8888" volumes: - ./work:/home/jovyan/work environment: JUPYTER_TOKEN: "your_secure_token" # 你可以设置一个安全的token command: "start-notebook.sh --NotebookApp.token='your_secure_token'" volumes: work:
步骤四:使用Docker Compose来构建和运行容器
-
在项目目录中运行以下命令来构建并启动容器:
#构建镜像 docker-compose build #启动镜像 docker-compose up
查看Jupyter Notebook
-
查看Jupyter Notebook的启动日志,找到类似以下的输出:
jupyter_1 | [I 08:00:00.000 NotebookApp] Serving notebooks from local directory: /app jupyter_1 | [I 08:00:00.000 NotebookApp] The Jupyter Notebook is running at: jupyter_1 | [I 08:00:00.000 NotebookApp] http://(your-container-id or 127.0.0.1):8888/?token=your-token jupyter_1 | [I 08:00:00.000 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
-
复制输出的URL,在浏览器中访问这个URL,即可使用Jupyter Notebook。
总结
通过这些步骤,你可以使用 Docker Compose 来管理和运行一个基础的 Jupyter Notebook 容器。
其他配置选项
- 安装更多包:你可以在
Dockerfile
中添加更多的RUN
命令来安装其他 Python 包或系统依赖。 - 挂载更多卷:在
docker-compose.yml
中,你可以添加更多的卷,以便将其他数据挂载到容器中。 - 自定义配置:你可以通过修改
command
来传递更多的 Jupyter Notebook 配置选项。
这样,通过使用 docker-compose
,你可以轻松管理和扩展你的 Jupyter 环境。