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描述。