自定义打包镜像
在安装自定义软件包之前请确认已经执行了pack操作,如何执行请参见打包镜像
Step0: 获取dockerfile
在完成pack操作后,系统会生成两个Dockerfile:
- uaitrain.Dockerfile 生成GPU镜像所使用的Dockerfile
- uaitrain-cpu.Dockerfile 生成CPU镜像所使用的Dockerfile
Step1: 修改dockerfile
修改GPU Dockerfile
我们打开uaitrain.Dockerfile 可以看到如下内容:
From uhub.ucloud.cn/uaishare/gpu_uaitrain_ubuntu-14.04_python-2.7.6_mxnet-0.11.0:v1.0 ADD ././code/ /data/
我们可以通过修改uaitrain.Dockerfile的方式来修改打包内容,例如我们要增加安装NLTK软件包,我们可以将dockerfile修改成:
From uhub.ucloud.cn/uaishare/gpu_uaitrain_ubuntu-14.04_python-2.7.6_mxnet-0.11.0:v1.0 RUN pip install -U nltk -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com ADD ././code/ /data/
我们在将/mnist/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.ucloud.cn/uaishare/cpu_uaitrain_ubuntu-14.04_python-2.7.6_mxnet-0.11.0:v1.0 ADD ././code/ /data/
使用和修改GPU Dockerfile相同的方法修改uaitrain-cpu.Dockerfile即可
注:详细的dockerfile使用规范请查询Docker官方文档
Step2: 重新打包Docker镜像
修改完dockerfile之后我们就可以重新打包Docker镜像了
打包GPU 镜像
我们可以执行以下指令来打包GPU镜像:
sudo docker build -t uhub.ucloud.cn// : -f uaitrain.Dockerfile .
执行完成后可以获得新的镜像:
uhub.ucloud.cn// :
案例
sudo docker build -t uhub.ucloud.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.ucloud.cn// : /bin/bash -c "cd /data && /usr/bin/python /data/train_mnist.py --model-prefix=mxnet-test --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.ucloud.cn/demo/test:uaitrain /bin/bash -c "cd /data && /usr/bin/python /data/train_mnist.py --model-prefix=mxnet-test --work_dir=/data --data_dir=/data/data --output_dir=/data/output --log_dir=/data/output"
注:案例使用的uhub.ucloud.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/train_mnist.py --model-prefix=mxnet-test --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/train_mnist.py --model-prefix=mxnet-test --work_dir=/data --data_dir=/data/data --output_dir=/data/output --log_dir=/data/output"
Step4: 登录UHub公共镜像库
上传镜像之前,需先登录UHub,且确保控制台的UHub创建过对应镜像库。
sudo docker login uhub.ucloud.cn
登录信息为控制台登录的对应账号密码。
Step5: 上传Docker镜像
UAI-Train平台目前仅接受GPU镜像训练,因此在上传镜像时我们只需要上传GPU的Docker镜像。
sudo docker push uhub.ucloud.cn// :
之后就可以在create中使用该镜像了