镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站
一、准备 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 ‘ 加入镜像站官方用户交流群。”