前言

BatchCompute 除了支持把软件直接安装到 ECS 镜像,还支持通过 Docker 镜像部署应用程序。

也可以自定义制作一个 Docker 镜像,上传到阿里云的容器镜像服务仓库中或者使用 registry 工具上传到阿里云 OSS,然后您可以指定您的作业的任务在这个镜像中运行。

1. BatchCompute 对 Docker 支持的原理

以 AutoCluster 模式为例,对比VM 方式Docker方式的使用过程。

  • VM 方式。用户提交作业,每个作业可以有多个任务,每个任务指定一个镜像(支持 Linux 和 Windows);系统运行任务时,会根据指定的镜像启动VM;用户任务将运行在这个VM上;任务完成后,结果会被上传到指定的持久化存储,然后销毁 VM,准备执行下一个任务。

  • Docker 方式:用户提交作业运行任务时,会先启动 VM 来支持 Docker 的系统镜像(如:支持 Docker 的 Ubuntu);然后从容器镜像服务仓库或者 OSS 下载指定的 Docker 镜像,并在该 VM 中启动,用户的任务将在该 Docker 容器内运行;任务完成后,结果上传到指定的持久化存储,然后销毁 VM,准备执行下一个任务。

说明

目前一个 VM,只支持运行一个 Docker 镜像。

# 使用VM:
---
  |-- job
       |-- task
             |-- VM (用户指定的 VM,支持 Windows 和 Linux)
                  |-- program (用户程序)

# 使用Docker模式:
---
  |-- job
       |-- task
             |-- VM (支持 docker 的 Ubuntu)
                 |-- Docker-Container(用户指定的 Docker 的容器镜像)
                      |-- program (用户程序)

2. 使用Docker和不使用Docker区别

-

不使用 Docker

使用 Docker

使用镜像

指定 ECS 镜像 ID

指定支持 Docker Container 的 ECS 镜像 ID(例如,官网提供的 Ubuntu),还需指定自定义 Docker 镜像。

程序运行平台

支持 Windows 和 Linux

支持 Linux

本地调试

不支持本地调试

镜像在本地制作,支持本地调试

3. 安装 Docker

A) 请到 Docker 官网下载安装

  • 在 Windows/Mac 上安装 toolbox

安装完成后会有2个快捷方式:

说明

Kitematic: 用来管理 docker container 的图形化界面 Docker Quickstart Terminal: 可以快速启动 docker 命令行界面。

说明

注意: 确保安装的 Docker 版本 >= 1.10, 否则会有兼容问题。

B) 配置加速器

使用加速器,将会提升您在中国获取 Docker 官方镜像的速度:阿里云容器服务开发者平台

4. 使用 Docker 注意事项

  • Docker container 运行时,用户为 root,path 环境变量默认为:/sbin:/usr/sbin:/bin:/usr/bin。注意没有/usr/local/bin

  • PWD 环境变量如果没有设置,则为’/batchcompute/workdir’。用户的程序包始终会被解压到 /batchcompute/workdir。

  • 使用 ClusterID 提交任务时, 因为 Docker registry 一旦启动后就不停止,因此提交到一个 cluster 中的所有 job,其 BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH 必须相同。

  • 目前 InputMapping,OutputMapping 不能同时挂载到同一个目录。

  • BatchCompute 启动 Docker 容器时使用 —privileged=false 模式,所以不允许在docker 容器中启动 docker 容器。