前言
最近在学习机器学习,为了方便在不同地方可以访问到相同的学习资源和保证学习进度的连续性以及无需重复搭建环境,从而降低学习成本,就需要搭建一套在线的学习平台,保证在任何地方,都可以快速进入学习状态。借助于jupyter可以完美满足我的需求。
另外,考虑到移植的方便性,将采用docker的方式构建和部署平台。
必要的文件
Dockerfile
首先编写Dockerfile文件,用于构建docker镜像
注意:Dockerfile需要和sources.list在同一个目录下
FROMrackspacedot/python37MAINTAINERarkMonRUNmv/etc/apt/sources.list/etc/apt/sources.list.bak#替换apt源为国内源,加快构建速度COPY./sources.list/etc/apt/RUNapt-getupdate&apt-getupgrade-y#更新pip源RUNpipconfigsetglobal.index-urlhttps://mirrors.aliyun.com/pypi/simple/RUN/usr/local/bin/python-mpipinstall--upgradepip#安装python画图插件RUNpip3installmatplotlib#安装jupyterRUNpip3installjupyterRUNipython3kernelinstall#安装Jupyter交互界面扩展组件RUNpip3installipywidgets#安装Jupyter交互界面扩展组件RUNjupyternbextensionenable--pywidgetsnbextension#配置Jupyter远程访问RUNecho"c.NotebookApp.open_browser=False">>/root/.jupyter/jupyter_notebook_config.pyRUNecho"c.NotebookApp.notebook_dir='/root/jupyter'">>/root/.jupyter/jupyter_notebook_config.pyRUNecho"c.NotebookApp.ip='*'">>/root/.jupyter/jupyter_notebook_config.pyRUNecho"c.NotebookApp.base_url='/jupyter'">>/root/.jupyter/jupyter_notebook_config.pyRUNecho"c.NotebookApp.allow_origin='*'">>/root/.jupyter/jupyter_notebook_config.py#安装tensorflowRUNpip3install--upgradetensorflowRUNpip3installtensorflow#安装kerasRUNpip3installkeras#启动容器时命令,因为容器默认在root用户下,故这里需要加上--allow-rootCMDjupyternotebook--allow-root
sources.list
使用apt的国内阿里云镜像,加快apt-get
的速度
$ cat sources.list
debhttp://mirrors.aliyun.com/ubuntu/trustymainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubuntu/trusty-securitymainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubuntu/trusty-updatesmainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubuntu/trusty-proposedmainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubuntu/trusty-backportsmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/trustymainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-securitymainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-updatesmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-proposedmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse
构建镜像
$dockerbuild.
注意:该命令的运行目录和Dockerfile必须在同一层目录下
启动镜像
$dockerrun-dti--namejupyter_keras-p40000:8888-v/data/workspace/docker-install/keras_jupyter/jupyter:/root/jupyter${image_id}
把容器内的/root/jupyter
目录挂载到宿主机/data/workspace/docker-install/Keras_jupyter/jupyter
目录下,
一方面,可以把在jupyter里编辑的文件,持久化到宿主机上,保证了数据的安全性
另一方面,后续可以做负载均衡的横向扩展:利用该镜像启动多个容器副本,所有容器都挂载到宿主机的同一个目录,利用nginx的upstream功能呢,实现负载均衡能力
外部访问
地址:http://HostIP:40000