鏡像下載下傳、域名解析、時間同步請點選 阿裡巴巴開源鏡像站
一、準備 App 的 Docker 鏡像
1. 制作 Docker 鏡像
根據自己的需求,使用者可以使用官方鏡像倉庫中的鏡像作為基礎鏡像,安裝需要的軟體或算法,制作成 Docker 鏡像,完成運作環境的定制;制作鏡像有兩種方法:
- 使用 Dockfile 制作鏡像
- 使用容器快速制作鏡像
具體制作方法可參考文章
Docker 鏡像制作。
建議:在制作 Docker 鏡像時,最好帶上 Tag,後續版本有更新時,隻需要更新 Tag 即可。
2. 本地調試Docker鏡像
Docker 鏡像制作完成以後,可以參考
Docker 本地調試進行本地調試,確定 Docker 鏡像在 BatchCompute 的環境下可以正常使用。
3. 推送到鏡像倉庫
可以将制作好的 Docker 鏡像推送到 OSS 的鏡像倉庫。具體方法請參考
Docker鏡像上傳到 OSS二、建立 App
BatchCompute提供了 API、SDK、控制台等三種方式建立 App,下面以控制台和 Python SDK 為例,分别介紹如何使用 Docker 鏡像建立 App。
1. 使用控制台建立 App
假如 Docker 鏡像被推送到 OSS 鏡像倉庫的路徑為
oss://demo-bucket/dockers/
,鏡像名稱為
localhost:5000/demodockerimage:0.1
如上圖所示,在建立 App 時,選擇鏡像類型為 Docker,填寫 Docker 鏡像的名稱,以及 OSS Registry 的路徑。
2. 使用 SDK 建立 App
使用 Python SDK 建立 App 時,參考如下的形式:
#encoding=utf-8
import sys
from batchcompute import Client, ClientError
from batchcompute import CN_BEIJING as REGION
from batchcompute.resources import (
JobDescription, TaskDescription, DAG, AutoCluster, GroupDescription, ClusterDescription, AppDescription
)
ACCESS_KEY_ID='xxxx' # 填寫您的 ACCESS_KEY_ID
ACCESS_KEY_SECRET='xxxx' # 填寫您的 ACCESS_KEY_SECRET
def main():
try:
client = Client(REGION, ACCESS_KEY_ID, ACCESS_KEY_SECRET)
app_desc = {
"Name":"Docker-app-demo",
"Daemonize":False,
"Docker":{
"Image":"localhost:5000/demodockerimage:0.1",
"RegistryOSSPath":"oss://demo-bucket/dockers/"
},
"CommandLine":"python test.py",
#其他參數這裡不詳細展示
}
appName = client.create_app(app_desc).Name
print('App created: %s' % appName)
except ClientError, e:
print (e.get_status_code(), e.get_code(), e.get_requestid(), e.get_msg())
if __name__ == '__main__':
sys.exit(main())
如上面的執行個體代碼所示,在
AppDescription
中填寫 Docker 資訊的
Image
和
RegistryOSSPath
三、Docker 鏡像更新
假如 App 中使用的 ISV 提供的軟體或算法有更新,您隻需要更新 Docker 鏡像,并用 Tag 辨別版本。然後更新 App 資訊中的 Docker 鏡像名稱就可以。
1. 使用控制台更新
如上圖所示,在 App 清單中找到需要更新的 App,點選修改按鈕進入 App 的修改頁面。
如上圖所示,在修改頁面,修改 App 的 Docker 鏡像名稱後,點選送出即可完成 App 的更新。
2. 使用 SDK 更新
使用 Python SDK 來更新 App 的 Docker 資訊可參考如下示例:
#encoding=utf-8
import sys
from batchcompute import Client, ClientError
from batchcompute import CN_BEIJING as REGION
from batchcompute.resources import (
JobDescription, TaskDescription, DAG, AutoCluster, GroupDescription, ClusterDescription, AppDescription
)
ACCESS_KEY_ID='xxxx' # 填寫您的 ACCESS_KEY_ID
ACCESS_KEY_SECRET='xxxx' # 填寫您的 ACCESS_KEY_SECRET
def main():
try:
client = Client(REGION, ACCESS_KEY_ID, ACCESS_KEY_SECRET)
app_desc = {
"Name":"Docker-app-demo",
"Daemonize":False,
"Docker":{
"Image":"localhost:5000/demodockerimage:0.2",
"RegistryOSSPath":"oss://demo-bucket/dockers/"
},
"CommandLine":"python test.py",
"EnvVars": {}
}
res = client.modify_app("Docker-app-demo", app_desc)
print res
except ClientError, e:
print (e.get_status_code(), e.get_code(), e.get_requestid(), e.get_msg())
if __name__ == '__main__':
sys.exit(main())
對于簡單的修改 Docker 版本号的情況,推薦使用控制台,操作更簡單。
“ 提供全面,高效和穩定的鏡像下載下傳服務。釘釘搜尋 ' 21746399 ‘ 加入鏡像站官方使用者交流群。”