228
魔獸
前言__Docker_操作指南_批量計算-阿裏雲
BatchCompute除了支持把軟件直接安裝到ECS鏡像,還支持通過Docker鏡像部署應用程序。
您可以自定義製作一個Docker鏡像,使用registry工具上傳到阿裏雲OSS,然後您可以指定您的作業的任務在這個鏡像中運行。
1. BatchCompute對Docker支持的原理
這裏要和普通VM支持對比說明一下:
(1) 先說使用普通VM, 用戶提交作業,每個作業可以有多個任務,每個任務指定一個鏡像(支持Linux 和 Window),係統運行這個任務時,會根據指定的鏡像啟動VM,用戶任務將運行在這個VM上。任務完成後結果會被上傳到指定的OSS目錄,VM銷毀。然後執行下一個任務。
(2) 使用Docker:每個任務也可以指定使用一個Docker容器鏡像來運行。運行task時,會先啟動一個VM運行支持Docker的係統鏡像(如:支持Docker的Ubuntu),然後會從OSS上下載你指定的Docker鏡像,在這個VM中啟動起來,用戶的任務將運行在這個Docker容器內。任務完成後結果上傳到指定的OSS目錄,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鏡像。 |
程序運行平台 | 支持Window和Linux | 支持Linux |
本地調試 | 不支持本地調試 | 鏡像在本地製作,支持本地調試 |
3. 安裝Docker
(1) 在 Ubuntu 上安裝(推薦使用)
sudo apt-get update #更新軟件源
sudo apt-get install docker.io #安裝docker
#檢查是否成功
sudo docker ps
可以看到類似下麵的結果:
Ubuntu下安裝好docker後,每次都要加sudo運行比較影響效率。有沒有好辦法?
您可以通過加入docker組,即可免sudo。
sudo gpasswd -a ${USER} docker # 將當前用戶加入docker組, 如果沒有docker組,加一個:sudo groupadd docker
sudo service docker restart # 重啟docker服務,然後注銷後重新登錄係統即可
(2) 在 window/Mac 上安裝
從官網下載docker toolbox:
https://www.docker.com/docker-toolbox
安裝完成後會有2個快捷方式:
Kitematic: 用來管理docker container的圖形化界麵
Docker Quickstart Terminal: 可以快速啟動 docker 命令行界麵。
(3) 配置加速器
使用加速器將會提升您在國內獲取Docker官方鏡像的速度:阿裏雲容器服務開發者平台
4. 製作Docker鏡像
本例中我們將製作一個 Ubuntu 鏡像,內置python。鏡像名稱:myubuntu。
新建一個目錄 dockerUbuntu,結構如下:
dockerUbuntu
|-- Dockerfile
文件 Dockerfile 的內容:
FROM ubuntu:14.04
# 這裏要替換 your_name 為您的名字, 和your_email 為您的Email
MAINTAINER your_name <your_email>
# 更新源
RUN apt-get update
# 清除緩存
RUN apt-get autoclean
# 安裝python
RUN apt-get install -y python
# 啟動時運行這個命令
CMD ["/bin/bash"]
運行以下命令,build鏡像:
cd dockerUbuntu #進入 dockerUbuntu 目錄
docker build -t myubuntu ./ #正式build, 命名為 myubuntu
- 注意:docker 命令在ubuntu中默認需要加sudo才能運行,而在Mac/Windows中,需要從“Docker Quickstart Terminal”中啟動的命令行工具中運行。
build 完成後, 運行以下命令查看:
docker images
可以看到類似下麵的結果:
製作docker鏡像,除了Dockerfile這種方式外,還有更加直觀的製作方式。
5. 將docker鏡像上傳到OSS
使用BatchCompute Docker服務,需要將製作的Docker鏡像myubuntu上傳到OSS,係統將會從OSS下載這個鏡像來運行您的任務程序。
(1) 安裝 OSS Docker Registry 2
假設您想要將docker存儲到OSS的目錄路徑為:
oss://your-bucket/dockers/
我們將利用Docker Registry 2官方鏡像創建一個私有鏡像倉庫,需要配置了OSS的Access Key ID, Access Key Secret, Region, Bucket等信息。
具體安裝步驟如下:
先在當前目錄生成文件config.yml
version: 0.1
log:
level: debug
storage:
oss:
accesskeyid: your_access_key_id
accesskeysecret: your_access_key_secret
region: oss-cn-qingdao
bucket: your-bucket
rootdirectory: dockers
secure: false
internal: false
http:
addr: 0.0.0.0:5000
其中的變量需要替換:
參數 | 描述 |
---|---|
your_access_key_id | 您的 access key id |
your_access_key_secret | 您的 access key secret |
your-bucket | 您的 bucket |
關於OSS配置的詳細信息請參見 Docker官方文檔
然後運行下麵的命令安裝
docker pull registry:2
docker run -v `pwd`/config.yml:/etc/docker/registry/config.yml -p 5000:5000 --name registry -d registry:2
- 注意:這裏region使用 oss-cn-qingdao, 表示使用青島region的OSS,而後麵提交作業也需要提交到相應的region才能正常工作。
完成後,可以運行以下命令查看:
docker ps #查看運行的container
如果成功安裝,可以看到 registry:2
(2) 運行下麵命令,將鏡像上傳到 OSS:
docker tag myubuntu localhost:5000/myubuntu
docker push localhost:5000/myubuntu
注意:
- 要用 localhost:5000/ 作為前綴,用其他的字符串上傳不了。5000 端口是第(1)步中 -p 5000:5000 中(冒號前的5000)指定的。
- 您製作的鏡像名稱為 localhost:5000/myubuntu,而不是 myubuntu。
檢驗是否上傳成功, 可以直接使用OSS控製台查看是否有這個目錄: oss://your-bucket/dockers/repositories/library/myubuntu/
6. 使用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容器。
最後更新:2016-11-23 16:03:58
上一篇:
並發__操作指南_批量計算-阿裏雲
下一篇:
提交作業例子__Docker_操作指南_批量計算-阿裏雲
圖片處理__安卓應用示例_最佳實踐_對象存儲 OSS-阿裏雲
DescribeLoadBalancerAttribute__LoadBalancer相關API_API 參考_負載均衡-阿裏雲
啟用伸縮組__API快速入門_快速入門_彈性伸縮-阿裏雲
阿裏雲的技術到底有多強?
GetShipperStatus__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
雲服務器 ECS 快照(Snapshot)
E-MapReduce 快速開始__創建 E-MapReduce_快速入門_E-MapReduce-阿裏雲
步驟一:控製台配置__快速上線_Web 應用防火牆-阿裏雲
直播截圖__使用手冊_視頻直播-阿裏雲
創建觸發器__數據庫開發_用戶指南(RDBMS)_數據管理-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲