自定义打包镜像

在安装自定义软件包之前请确认已经执行了pack操作,如何执行请参见打包镜像

Step0: 获取dockerfile

在完成pack操作后,系统会生成两个Dockerfile:

  • uaitrain.Dockerfile 生成GPU镜像所使用的Dockerfile
  • uaitrain-cpu.Dockerfile 生成CPU镜像所使用的Dockerfile

Step1: 修改dockerfile

修改GPU Dockerfile

我们打开uaitrain.Dockerfile 可以看到如下内容:

From uhub.auto-ai.com.cn/uaishare/gpu_uaitrain_ubuntu-14.04_python-2.7.6_tensorflow-1.1.0:v1.0
ADD ././code/ /data/

我们可以通过修改uaitrain.Dockerfile的方式来修改打包内容,例如我们要增加安装NLTK软件包,我们可以将dockerfile修改成:

From uhub.auto-ai.com.cn/uaishare/gpu_uaitrain_ubuntu-14.04_python-2.7.6_tensorflow-1.1.0:v1.0

RUN pip install -U nltk -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
ADD ././code/ /data/

我们在将/mnist_summary_1.1/code/下面的内容拷贝至 Docker容器的/data/目录下之前执行了

RUN pip install -U nltk -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

用以安装了nltk软件包

修改CPU Dockerfile

我们打开uaitrain-cpu.Dockerfile 可以看到如下内容:

From uhub.auto-ai.com.cn/uaishare/cpu_uaitrain_ubuntu-14.04_python-2.7.6_tensorflow-1.1.0:v1.0
ADD ././code/ /data/

使用和修改GPU Dockerfile相同的方法修改uaitrain-cpu.Dockerfile即可

注:详细的dockerfile使用规范请查询Docker官方文档

Step2: 重新打包Docker镜像

修改完dockerfile之后我们就可以重新打包Docker镜像了

打包GPU 镜像

我们可以执行以下指令来打包GPU镜像:

sudo docker build -t uhub.auto-ai.com.cn//: -f uaitrain.Dockerfile .

执行完成后可以获得新的镜像:

uhub.auto-ai.com.cn//:

案例

sudo docker build -t uhub.auto-ai.com.cn/demo/test:uaitrain -f uaitrain.Dockerfile .

打包CPU 镜像

由于CPU镜像仅用户本地测试,因此打包也比较简单,可以执行以下指令来打包CPU镜像:

sudo docker build -t -cpu: -f uaitrain-cpu.Dockerfile .

执行完成后可以获得新的镜像:

-cpu:

案例

sudo docker build -t test-cpu:uaitrain -f uaitrain-cpu.Dockerfile .

Step3: 本地测试Docker镜像

我们可以使用打包镜像 《Step4: 输出说明》中的类似案例运行本地测试。
测试时需要讲docker镜像的名字做修改:

GPU测试

sudo nvidia-docker run -it -v /data/test/data/:/data/data -v /data/test/output/:/data/output uhub.auto-ai.com.cn//: /bin/bash -c "cd /data && /usr/bin/python /data/mnist_summary.py --max_step=2000 --work_dir=/data --data_dir=/data/data --output_dir=/data/output --log_dir=/data/output"

GPU测试(mnist_summary例子):

sudo nvidia-docker run -it -v /data/test/data/:/data/data -v /data/test/output/:/data/output uhub.auto-ai.com.cn/demo/test:uaitrain /bin/bash -c "cd /data && /usr/bin/python /data/mnist_summary.py --max_step=2000 --work_dir=/data --data_dir=/data/data --output_dir=/data/output --log_dir=/data/output"

注:案例使用的uhub.auto-ai.com.cn/demo/ 是虚拟registry,不可docker push

CPU测试

sudo docker run -it -v /data/test/data/:/data/data -v /data/test/output/:/data/output -cpu: /bin/bash -c "cd /data && /usr/bin/python /data/mnist_summary.py --max_step=2000 --work_dir=/data --data_dir=/data/data --output_dir=/data/output --log_dir=/data/output"

CPU测试(mnist_summary例子):

sudo docker run -it -v /data/test/data/:/data/data -v /data/test/output/:/data/output test-cpu:uaitrain /bin/bash -c "cd /data && /usr/bin/python /data/mnist_summary.py --max_step=2000 --work_dir=/data --data_dir=/data/data --output_dir=/data/output --log_dir=/data/output"

Step4: 登录Uhub公共镜像库

上传镜像之前,需先登录Uhub,且确保控制台的Uhub创建过对应镜像库。

sudo docker login uhub.auto-ai.com.cn

登录信息为控制台登录的对应账号密码。

Step5: 上传Docker镜像

UAI-Train平台目前仅接受GPU镜像训练,因此在上传镜像时我们只需要上传GPU的Docker镜像。

sudo docker push uhub.auto-ai.com.cn//: 

之后就可以在create中使用该镜像了