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