JupyterNotebook-Docker版

简介: 制作jupyter notebook的docker镜像,兼容numpy, pandas, matplotlib, pyspark, opencv-python, requests, flask等组件。

制作前提:电脑安装并启动Docker Desktop
详细步骤如下:
(1)样式文件 custom.css

.CodeMirror pre {font-family: Consolas; font-size: 12pt;}
* {font-family: Consolas;}
div.output_area pre {font-family: Consolas; font-size: 12pt;}
div.input_prompt {font-family: Consolas; font-size: 12pt;}
div.out_prompt_overlay {font-family: Consolas; font-size: 12pt;}
div.prompt {font-family: Consolas; font-size: 12pt;}
span.cm-comment {font-family:  Consolas !important; font-style:normal !important; color:#BB3D00 !important;}

(2)镜像生成文件Dockerfile

FROM python:3.9.16

RUN python -m pip install --upgrade pip
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
RUN pip install numpy
RUN pip install scipy
RUN pip install pillow
RUN pip install matplotlib
RUN pip install pandas
RUN pip install pyspark
RUN pip install psutil
RUN pip install virtualenv
RUN pip install virtualenvwrapper
RUN pip install opencv-python
RUN pip install requests
RUN pip install flask_wtf
RUN pip install flask-sqlalchemy
RUN pip install flask-mysqldb
RUN pip install scikit-image
RUN pip install notebook

# 创建用户
RUN useradd -ms /bin/bash yanghaitao

# 设置默认目录
RUN jupyter notebook --generate-config
RUN echo "c.NotebookApp.notebook_dir='/home/yanghaitao'" >> /root/.jupyter/jupyter_notebook_config.py

# 设置默认的字体
COPY custom.css /root/.jupyter/custom/
COPY custom.css /root/.jupyter/

EXPOSE 8888
CMD jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root --no-browser

(3)构建命令
将两个文件放在同一目录下,运行构建命令

docker build -t my-jupyter-notebook:latest .

需要等待较长时间
(4)查看镜像

docker images

(5)window端测试运行命令

docker run -p 8888:8888 my-jupyter-notebook:latest

(6)镜像下载为本地文件

# 将镜像打包为本地文件
# 指令:docker save 镜像id > 文件名.tar   缺点:load之后没有tag
# docker save -o my-jupyter-notebook.tar my-jupyter-notebook:latest
docker save ee2a262aa724 > my-jupyter-notebook.tar

大约2.7G,上传到目标服务器。

(7)将镜像文件加载到docker中

# 将本地文件加载为镜像
# 指令:docker load < 文件名.tar
docker load < my-jupyter-notebook.tar

如果根据镜像ID导出为文件,加载的镜像没有tag信息,可以重命名

# 镜像重命名
# docker tag  旧镜像名  新镜像名
# docker tag  镜像id  仓库:标签
docker tag ee2a262aa724 my-jupyter-notebook:latest

(8)挂载数据卷
为了能够保存jupyter notebook的文档,必须将docker中的文档保存到linux服务器上,不然一旦docker容器被删掉,文档就不在了。启动命令如下:

# 挂载数据卷
# -v 宿主机的绝对路径:容器内路径
docker run -p 8888:8888 
    -v /opt/jupyter/notebook:/home/yanghaitao
       -d my-jupyter-notebook:latest

(9)浏览器访问Notebook
http://ip:8888/
(10)获取token

# 进入容器
docker exec -it 92585929f745 /bin/bash
# 获取token
jupyter notebook list
相关文章
|
Linux 应用服务中间件 虚拟化
初识Docker
初识Docker
|
存储 关系型数据库 Linux
|
NoSQL Shell Redis
docker的使用
docker的使用
160 0
|
8月前
|
存储 弹性计算 数据安全/隐私保护
|
Shell Docker 容器
|
Linux 开发工具 git
5 分钟带你看懂 Docker
什么是Docker? 打开翻译君输入Docker 结果显示码头工人,没错!码头工人搬运的是集装箱,那么今天要讲的Docker其操作的也是集装箱,这个集装箱就静态而言就是一个应用镜像文件,就动态而言,就是一个容器。
4311 0
|
Linux Docker 容器
docker使用
docker run -t -i --mount type=bind,source=/c/workspace/gopath,target=/go -p 8080:8080 golang:1.11-stretch docker start -i CONTAINER ID docker exec -i -t CONTAINER ID /bin/bash volumes写dockerfile的时候无法挂载本地目录,使用 --volumes-from=容器id 来做基于volume互联 基于link互联,跨主机用connectable,实际应用不多。
1520 0
|
9月前
|
运维 Java Android开发
认识Docker
认识Docker
|
运维 Java 程序员
【docker】对docker的理解
【docker】对docker的理解
|
9月前
|
存储 程序员 Linux
什么是 Docker ?
本文介绍了容器技术的起源和Docker这一容器技术的简介。在传统开发过程中,环境搭建的重复性工作浪费了大量时间和资源。为了解决这个问题,容器技术应运而生,它减少了环境重复搭建的需求,提高了效率。相较于虚拟机,容器更轻量级,启动快速,资源利用率更高。Docker作为流行的容器技术,可以固化配置、自动化CI/CD流程、实现应用隔离、快速扩容缩容以及节省成本。Docker由客户端、守护进程和注册表服务组成,其核心概念包括镜像、容器和仓库。

热门文章

最新文章