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 命令行界面。
linux 上請自行到 官網下載安裝 。
注意: 確保安裝的 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 容器。