欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

构建docker镜像基本教程

程序员文章站 2024-01-27 11:29:22
...

构建自定义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镜像

构建docker镜像基本教程
构建docker镜像基本教程
点进去能看到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

即可将当前容器存为指定名字可标签的镜像