Docker作业提交

BatchCompute 中, 提交作业时使用 docker 与普通 VM 作业基本相同,只是在设置作业参数时有稍微区别。

1. DAG 作业

1.1 使用支持 Docker 的 ImageId

需要将集群描述的 ImageId 指定为 BatchCompute 的公共镜像的 Id(支持 Docker 镜像, ID 为 img-ubuntu)。

AutoCluster 集群 ImageId 设置代码:

//设置AutoCluster集群ImageID
AutoCluster autoCluster = new AutoCluster();
//设置集群镜像信息ECSImageId 在不同region可能会发生变化
//autoCluster.setECSImageId("m-wz9dk5nao5z3fw6bo9k6");
//建议使用setImageId接口设置
autoCluster.setImageId("img-ubuntu");

固定集群 ImageId 设置代码:

ClusterDescription desc = new ClusterDescription();
desc.setName("cluster_test");
desc.setImageId("img-ubuntu");

1.2 Docker 镜像在 OSS

需要 DAG 作业环境变量(EnvVars)中增加如下两个参数如下,具体 EnvVars 变量在 DAG 作业中的位置,参考API文档

字段名称

描述

是否可选

BATCH_COMPUTE_DOCKER_IMAGE

Docker 镜像名称

可选

BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH

Docker 镜像在 OSS-Registry 中的存储路径

可选

  • 如果没有 BATCH_COMPUTE_DOCKER_IMAGE 参数,表示不使用 docker ,这时 BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH 将被忽略。

  • 如果有 BATCH_COMPUTE_DOCKER_IMAGE, 则表示使用 docker。

示例代码:

//oss registry模式
cmd.addEnvVars("BATCH_COMPUTE_DOCKER_IMAGE", "localhost:5000/yuorBucket/dockers:0.1");//镜像名称:版本;
cmd.addEnvVars("BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH", "oss://your-bucket/dockers");//设置OSS地址

1.3 Docker 镜像在容器镜像仓库

需要 DAG 作业 Docker 变量设置容器镜像仓库地址以及镜像版本号如下,具体 Docker 变量在 DAG 作业中的位置,参考API文档

示例代码

//容器镜像模式
Command.Docker docker = new Command.Docker();
docker.setImage("registry.cn-beijing.aliyuncs.com/demotest/test:0.1");
cmd.setDocker(docker);

1.4 创建作业的源码

Java 源码参考作业创建SDK描述

2. APP 作业

APP在创建的时候指定是VM 运行还是 docker运行作业,因此需要在创建APP时配置,APP描述中设置docker配置。Docker 镜像在 OSS 和镜像在容器镜像仓库参数相同,只是设置方法存在差异。

2.1 Docker 镜像在 OSS

示例代码

//设置docker oss registry 模式
AppDescription.Docker docker = new AppDescription.Docker();
docker.setImage("localhost:5000/yuorBucket/dockers:0.1");//镜像信息
docker.setRegistryOSSPath("oss://your-bucket/dockers");//OSS 地址
desc.setDocker(docker);

2.2 Docker 镜像在容器镜像仓库

示例代码

//设置docker oss registry 模式
AppDescription.Docker docker = new AppDescription.Docker();

//设置docker 容器镜像服务模式
docker.setImage("registry.cn-beijing.aliyuncs.com/demotest/test:0.1");//镜像信息

desc.setDocker(docker);

2.3 创建APP的源码

Java 源码参考APP创建SDK描述