构建docker镜像基本教程
构建自定义kubeflow notebook镜像
构建notebook镜像的基本要求,是在镜像的python环境中安装jupyter和notebook 的工具包。
下面我以tensorflow/tensorflow:1.12.0-gpu-py3官方的基础镜像为例,构建用户自定义notebook镜像。
第一步:下载基础镜像
在公司办公网络的环境下,下载基础镜像会比较花时间,可以把下载基础镜像的工作放在晚上。
基础镜像作为构建个性化镜像的基础,可以复用。接下来我们的操作是在基础镜像的基础进行的。
第二步:构建镜像环境需要的requirements.txt和Dockerfile
文件内容如下:
requirements.txt
notebook
jupyter
Dockerfile
FROM tensorflow/tensorflow:1.12.0-gpu-py3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN export https_proxy="https://10.223.94.15:8089" && export http_proxy="http://10.223.94.15:8089" && no_proxy="10.5.188.249,localhost"
RUN pip install --upgrade pip -i http://10.5.188.249:8089/simple/ --trusted-host 10.5.188.249
RUN pip install -i http://10.5.188.249:8089/simple/ -r requirements.txt --trusted-host 10.5.188.249
ENV NB_PREFIX /
CMD ["sh","-c", "jupyter notebook --notebook-dir=/home/jovyan --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}"]
执行命令构建镜像:
docker build -t tensorflow-1.12.0-notebook-py3-gpu:v0.0.1 .
此时我们已经构建完成一个notebook镜像,镜像名称为: tensorflow-1.12.0-notebook-py3-gpu,tag为:v0.0.1
第三步:使用自定义notebook镜像
点进去能看到jupyter界面,表示镜像打包无异常。
解释Dockerfile内容
第1行:指定打notebook镜像依赖的基础镜像
第5,6,7行:打开网络代理(方便下载包)
第9,10行:使用了私有源下载包
第13行参数含义:
–notebook-dir=/home/jovyan 指明了notebook服务的工作路径
–ip=0.0.0.0 jupyter服务监听所有ip
–allow-root 允许使用root权限运行notebook
设置notebook服务端口 --port=8888
不需要用户认证,免密登入 --NotebookApp.token=’’ --NotebookApp.password=’’ --NotebookApp.allow_origin=’*’
镜像增量更新
开发人员在开发的过程中,需要对镜像的环境不断的更新(形似工作中的存档);不管是linux环境还是python环境,实时将更新环境后的镜像保存下来,能减少工程在节点间迁移的成本,也能保证工作环境的稳定性。
目前有两种方式可供开发人员选择
增量制作镜像
这种方式可以参考“构建自定义kubeflow notebook镜像”一节,可以将需要增量安装或者修改的配置写进Dockerfile,然后依赖上一个版本的镜像制作新的镜像。
容器存镜像
在不考虑镜像文件大小的前提下,容器存镜像是对用户比较友好的方式。
步骤如下:
第一步:在容器中安装、配置自己需要的环境
第二步:
执行:
docker ps
找到当前容器的id
然后执行:
docker commit container-id image:tag
即可将当前容器存为指定名字可标签的镜像
上一篇: 内心有种紧迫感
下一篇: 异构交通流matlab源码