全部产品

Docker作业提交

更新时间:2018-11-28 16:56:37

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

1. DAG 作业

1.1 使用支持 Docker 的 ImageId

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

AutoCluster 集群 ImageId 设置代码:

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

固定集群 ImageId 设置代码:

  1. ClusterDescription desc = new ClusterDescription();
  2. desc.setName("cluster_test");
  3. 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。

示例代码:

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

1.3 Docker 镜像在容器镜像仓库

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

示例代码

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

1.4 创建作业的源码

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

2. APP 作业

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

2.1 Docker 镜像在 OSS

示例代码

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

2.2 Docker 镜像在 容器镜像仓库

示例代码

  1. //设置docker oss registry 模式
  2. AppDescription.Docker docker = new AppDescription.Docker();
  3. //设置docker 容器镜像服务 模式
  4. docker.setImage("registry.cn-beijing.aliyuncs.com/demotest/test:0.1");//镜像信息
  5. desc.setDocker(docker);

2.3 创建APP的源码

JAVA 源码参考APP创建SDK描述