定制开发环境Docker镜像

简介

Xiaomi Cloud-ML支持Bring Your Own Image功能,允许用户传入自定义的Docker镜像来启动开发环境。

注意,用户提供的镜像地址应该是公开可访问的,如果在DockerHub中下载镜像和启动任务时间较长。

制作Docker镜像

Cloud-ML的镜像中包含了平台通用的python,nvidia cuda,FDS FUSE等软件依赖。因此不推荐用户从头制作docker镜像,建议使用Cloud-ML的镜像作为基础镜像,进行增量修改。 和普通docker镜像制作过程相同,用户可以使用Dockerfile和docker commit两种方式制作新的镜像。下面分别举例介绍两种方式。

使用Dockerfile制作docker镜像

创建Dockerfile,使用某个Cloud-ML镜像作为基础镜像,添加用户自定义的内容。举例如下:

FROM cnbj6-repo.cloud.mi.com//cloud-ml/tensorflow-gpu:1.3.0-xm1.0.0

# Install python3
apt-get install python3

# Add local files
COPY init_env.py /

编译Dockerfile,生成镜像

docker build -t cnbj6-repo.cloud.mi.com//user1/tensorflow-gpu:1.3.0-xm1.0.0-python3 .

推送镜像到docker registry, (不熟悉docker registry的用户可以参考http://docs.api.xiaomi.net/docker-registry/)

docker login cnbj6-repo.cloud.mi.com/
docker push cnbj6-repo.cloud.mi.com//user1/tensorflow-gpu:1.3.0-xm1.0.0-python3

使用docker commit制作docker镜像

使用某个Cloud-ML镜像创建容器,进入容器后添加用户自定义的内容

docker run it --name mycontainer1 cnbj6-repo.cloud.mi.com//cloud-ml/tensorflow-gpu:1.3.0-xm1.0.0 bash
apt-get install python3
echo "export PYTHONUNBUFFERED=0" > /init_env.py

打包docker容器,生成镜像

docker commit --change='/prepare_dev.py && /run_jupyter.sh' mycontainer1 cnbj6-repo.cloud.mi.com//user1/tensorflow-gpu:1.3.0-xm1.0.0-python3 .

推送镜像到docker registry, (不熟悉docker registry的用户可以参考http://docs.api.xiaomi.net/docker-registry/)

docker login cnbj6-repo.cloud.mi.com/
docker push cnbj6-repo.cloud.mi.com//user1/tensorflow-gpu:1.3.0-xm1.0.0-python3

使用示例

用户创建开发环境时指定Docker镜像地址即可。

cloudml dev create -n mydev -p mypassword -d cnbj6-repo.cloud.mi.com//user1/tensorflow-gpu:1.3.0-xm1.0.0-python3

参数介绍

  • -d 表示用户指定的Docker镜像地址,注意不可与 -F-V 参数同时使用。

注意:

Cloud-ML DevEnv的启动脚本是 /prepare_dev.py && /run_jupyter.sh,启动的时候会默认执行/prepare_dev.py && /run_jupyter.sh,所以,这个文件是必须的,里面的内容则可以根据自己的具体情况定义。

results matching ""

    No results matching ""