背景知识

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 镜像。

  1. # 使用VM:
  2. ---
  3. |-- job
  4. |-- task
  5. |-- VM (用户指定的 VM,支持 Windows Linux)
  6. |-- program (用户程序)
  7. # 使用Docker模式:
  8. ---
  9. |-- job
  10. |-- task
  11. |-- VM (支持 docker Ubuntu)
  12. |-- Docker-Container(用户指定的 Docker 的容器镜像)
  13. |-- 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 容器。