前言
BatchCompute 除了支持把軟件直接安裝到 ECS 鏡像,還支持通過(guò) Docker 鏡像部署應(yīng)用程序。
也可以自定義制作一個(gè) Docker 鏡像,上傳到阿里云的容器鏡像服務(wù)倉(cāng)庫(kù)中或者使用 registry 工具上傳到阿里云 OSS,然后您可以指定您的作業(yè)的任務(wù)在這個(gè)鏡像中運(yùn)行。
1. BatchCompute 對(duì) Docker 支持的原理
以 AutoCluster 模式為例,對(duì)比VM 方式
和Docker方式
的使用過(guò)程。
VM 方式。用戶提交作業(yè),每個(gè)作業(yè)可以有多個(gè)任務(wù),每個(gè)任務(wù)指定一個(gè)鏡像(支持 Linux 和 Windows);系統(tǒng)運(yùn)行任務(wù)時(shí),會(huì)根據(jù)指定的鏡像啟動(dòng)VM;用戶任務(wù)將運(yùn)行在這個(gè)VM上;任務(wù)完成后,結(jié)果會(huì)被上傳到指定的持久化存儲(chǔ),然后銷毀 VM,準(zhǔn)備執(zhí)行下一個(gè)任務(wù)。
Docker 方式:用戶提交作業(yè)運(yùn)行任務(wù)時(shí),會(huì)先啟動(dòng) VM 來(lái)支持 Docker 的系統(tǒng)鏡像(如:支持 Docker 的 Ubuntu);然后從容器鏡像服務(wù)倉(cāng)庫(kù)或者 OSS 下載指定的 Docker 鏡像,并在該 VM 中啟動(dòng),用戶的任務(wù)將在該 Docker 容器內(nèi)運(yùn)行;任務(wù)完成后,結(jié)果上傳到指定的持久化存儲(chǔ),然后銷毀 VM,準(zhǔn)備執(zhí)行下一個(gè)任務(wù)。
目前一個(gè) VM,只支持運(yùn)行一個(gè) Docker 鏡像。
# 使用VM:
---
|-- job
|-- task
|-- VM (用戶指定的 VM,支持 Windows 和 Linux)
|-- program (用戶程序)
# 使用Docker模式:
---
|-- job
|-- task
|-- VM (支持 docker 的 Ubuntu)
|-- Docker-Container(用戶指定的 Docker 的容器鏡像)
|-- program (用戶程序)
2. 使用Docker和不使用Docker區(qū)別
- | 不使用 Docker | 使用 Docker |
使用鏡像 | 指定 ECS 鏡像 ID | 指定支持 Docker Container 的 ECS 鏡像 ID(例如,官網(wǎng)提供的 Ubuntu),還需指定自定義 Docker 鏡像。 |
程序運(yùn)行平臺(tái) | 支持 Windows 和 Linux | 支持 Linux |
本地調(diào)試 | 不支持本地調(diào)試 | 鏡像在本地制作,支持本地調(diào)試 |
3. 安裝 Docker
A) 請(qǐng)到 Docker 官網(wǎng)下載安裝
在 Windows/Mac 上安裝 toolbox 。
安裝完成后會(huì)有2個(gè)快捷方式:
Kitematic: 用來(lái)管理 docker container 的圖形化界面 Docker Quickstart Terminal: 可以快速啟動(dòng) docker 命令行界面。
linux 上請(qǐng)自行到 官網(wǎng)下載安裝 。
注意: 確保安裝的 Docker 版本 >= 1.10, 否則會(huì)有兼容問(wèn)題。
B) 配置加速器
使用加速器,將會(huì)提升您在中國(guó)獲取 Docker 官方鏡像的速度:阿里云容器服務(wù)開(kāi)發(fā)者平臺(tái) 。
4. 使用 Docker 注意事項(xiàng)
Docker container 運(yùn)行時(shí),用戶為 root,path 環(huán)境變量默認(rèn)為:/sbin:/usr/sbin:/bin:/usr/bin。注意沒(méi)有/usr/local/bin
PWD 環(huán)境變量如果沒(méi)有設(shè)置,則為’/batchcompute/workdir’。用戶的程序包始終會(huì)被解壓到 /batchcompute/workdir。
使用 ClusterID 提交任務(wù)時(shí), 因?yàn)?Docker registry 一旦啟動(dòng)后就不停止,因此提交到一個(gè) cluster 中的所有 job,其 BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH 必須相同。
目前 InputMapping,OutputMapping 不能同時(shí)掛載到同一個(gè)目錄。
BatchCompute 啟動(dòng) Docker 容器時(shí)使用 —privileged=false 模式,所以不允許在docker 容器中啟動(dòng) docker 容器。