BatchCompute 除了支援把軟體直接安裝到 ECS 鏡像,還支援通過 Docker 鏡像部署應用程式。
也可以自訂製作一個 Docker 鏡像,上傳到阿里雲的Container Registry倉庫中或者使用 registry 工具上傳到阿里雲 OSS,然後您可以指定您的作業的任務在這個鏡像中運行。
1. BatchCompute 對 Docker 支援的原理
以 AutoCluster 模式為例,對比VM 方式
和Docker方式
的使用過程。
VM 方式。使用者提交作業,每個作業可以有多個任務,每個任務指定一個鏡像(支援 Linux 和 Windows);系統運行任務時,會根據指定的鏡像啟動VM;使用者任務將運行在這個VM上;任務完成後,結果會被上傳到指定的持久化儲存,然後銷毀 VM,準備執行下一個任務。
Docker 方式:使用者提交作業運行任務時,會先啟動 VM 來支援 Docker 的系統鏡像(如:支援 Docker 的 Ubuntu);然後從Container Registry倉庫或者 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 官方鏡像的速度:阿里雲Container Service開發人員平台 。
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 容器。