最近计划了解faiss,但是faiss无法在windows下安装,因此打算把faiss部署到服务器上进行一些简单的测试,然后学长就推荐了一个交互式笔记本jupyter。
这里主要记录一下如何在镜像里部署jupyter。
不使用Docker直接部署
使用conda安装jupyter
conda install jupyter
创建一个配置文件:
jupyter notebook --generate-config
由于我使用的是root账户,因此该配置文件的路径为:
/root/.jupyter/jupyter_notebook_config.py
接着是使用note.auth的passwd函数生成一个密钥。
>from jupyter.auth import passwd
>passwd()
>**输入两次密码后会返回一个密钥,保存
然后修改jupyter_notebook_config.py中的一部分语句,如下:
## notebook服务会监听的IP地址.
c.NotebookApp.ip = '0.0.0.0'
## 用于笔记本和内核的目录。
c.NotebookApp.notebook_dir = '/code'
## 默认不打开浏览器
c.NotebookApp.open_browser = False
# The string should be of the form type:salt:hashed-password.
c.NotebookApp.password = 'sha1:输入刚才给的密钥'
## notebook服务会监听的IP端口.
c.NotebookApp.port = 8888
接着在命令行输入下列语句开启:
jupyter notebook
然后在浏览器输入ip:8888后就可以访问。
使用Docker
使用Docker出现的问题主要有:
- conda安装jupyter
- 配置文件
对于第一个问题,本镜像以conda/miniconda3为基础镜像;对于第二个问题,我们会直接用到刚才得到的配置文件。
Dockerfile文件如下:
FROM conda/miniconda3
VOLUME ['/code']
WORKDIR /code
RUN conda install -y jupyter
# add configuration
RUN mkdir -p /root/.jupyter
COPY jupyter_notebook_config.py /root/.jupyter/
# run
CMD jupyter notebook --allow-root
EXPOSE 8888
Dockerfile文件会使用conda安装jupyter,并把刚才生成的配置文件放到镜像的对应目录里,之后直接运行jupyter notebook。 docker-compose.yml文件如下:
version: "2.2"
services:
detail:
build: .
volumes:
- ./workfiles:/code
ports:
- "8888:8888"
该文件首先会把本目录下的workfile文件夹映射到镜像的/code文件夹下,然后会把8888和镜像的8888端口映射。
我的文件目录如下:
之后输入docker-compose up,网络顺利的话镜像很快生成,这时候可以使用
docker-compose up -d
让镜像后台运行即可。
注:jupyter默认使用的不是conda的环境,如果想使用conda环境,则可以参考jupyter notebook 添加 conda 环境,在上述操作完成后,就可以在新建文件时显示出:
base即为conda的环境,这里仍然命名为base。
参考文档:
拓展: