博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 Docker 镜像构建批量计算 App
阅读量:6387 次
发布时间:2019-06-23

本文共 3375 字,大约阅读时间需要 11 分钟。

批量计算提供了 ,可以使用虚拟机(VM)镜像来定制运行环境,也可以使用 Docker 镜像,本文将介绍如何使用 Docker 镜像创建 App 和提交 App 作业。

背景

如果您的作业使用了 ISV 提供的软件或算法,可以考虑将其封装在 Docker 镜像中,再使用 App 设置作业的模板(包括资源类型和运行环境)。这样一来,提交作业时只需提供输入和输出信息即可。

当软件或算法有更新时,只需要更新 Docker 镜像,更新后可以通过 Docker 镜像的 Tag 来标识不同的版本号,修改 App 中 Docker 镜像的版本号即可完成运行环境的更新。

1. 准备 App 的 Docker 镜像

A) 制作 Docker 镜像

根据自己的需求,用户可以使用官方镜像仓库中的镜像作为基础镜像,安装需要的软件或算法,制作成 Docker 镜像,完成运行环境的定制;

制作镜像有两种方法:

  • 使用 Dockfile 制作镜像
  • 使用容器快速制作镜像

具体制作方法可参考用户指南中的 。

建议:在制作 Docker 镜像时,最好带上 Tag,后续版本有更新时,只需要更新 Tag 即可。

B) 本地调试Docker镜像

Docker 镜像制作完成以后,可以参考用户指南中的 相关章节进行本地调试,确保 Docker 镜像在 BatchCompute 的环境下可以正常使用。

C) 推送到镜像仓库

可以将制作好的 Docker 镜像推送到 OSS 的镜像仓库。具体方法请参考用户指南中 的详细描述 。

2. 创建 App

BatchCompute提供了 API、SDK、控制台等三种方式创建 App,下面以控制台和 Python SDK 为例,分别介绍如何使用 Docker 镜像创建 App。

A) 使用控制台创建 App

假如 Docker 镜像被推送到 OSS 镜像仓库的路径为oss://demo-bucket/dockers/,镜像名称为localhost:5000/demodockerimage:0.1

create_app_basic

如上图所示,在创建 App 时,选择镜像类型为 Docker,填写 Docker 镜像的名称,以及 OSS Registry 的路径。

关于控制台如何创建 App 的其他参数详情,请参考用户指南中 的描述,这里不再赘述。

B) 使用 SDK 创建 App

使用 Python SDK 创建 App 时,参考如下的形式:

#encoding=utf-8import sysfrom batchcompute import Client, ClientErrorfrom batchcompute import CN_BEIJING as REGIONfrom batchcompute.resources import (    JobDescription, TaskDescription, DAG, AutoCluster, GroupDescription, ClusterDescription, AppDescription)ACCESS_KEY_ID='xxxx' # 填写您的 ACCESS_KEY_IDACCESS_KEY_SECRET='xxxx' # 填写您的 ACCESS_KEY_SECRETdef 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 信息的ImageRegistryOSSPath。其他参数请参考用户指南中的。

3. 提交 App 作业

提交作业时,不再涉及 Docker 相关的信息,具体方法请参考用户指南中的描述。

4. Docker 镜像更新

假如 App 中使用的 ISV 提供的软件或算法有更新,您只需要更新 Docker 镜像,并用 Tag 标识版本。然后更新 App 信息中的 Docker 镜像名称就可以。

A) 使用控制台更新

modify_app_start

如上图所示,在 App 列表中找到需要更新的 App,点击修改按钮进入 App 的修改页面。

modify_app

如上图所示,在修改页面,修改 App 的 Docker 镜像名称后,点击提交即可完成 App 的更新。

B) 使用 SDK 更新

使用 Python SDK 来更新 App 的 Docker 信息可参考如下示例:

#encoding=utf-8import sysfrom batchcompute import Client, ClientErrorfrom batchcompute import CN_BEIJING as REGIONfrom batchcompute.resources import (    JobDescription, TaskDescription, DAG, AutoCluster, GroupDescription, ClusterDescription, AppDescription)ACCESS_KEY_ID='xxxx' # 填写您的 ACCESS_KEY_IDACCESS_KEY_SECRET='xxxx' # 填写您的 ACCESS_KEY_SECRETdef 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 版本号的情况,推荐使用控制台,操作更简单。

转载地址:http://lmdha.baihongyu.com/

你可能感兴趣的文章
c++将bool变量以文字形式打印
查看>>
洛谷P1111 修复公路 并查集 图论 最小生成树
查看>>
微名汇-微信公众平台功能开发(微信聊天机器人)
查看>>
A2W和W2A :很好的多字节和宽字节字符串的转换宏
查看>>
_T和_L的区别
查看>>
我个人的javascript和css命名规范
查看>>
android ANR产生原因和解决办法
查看>>
kylin的安装与配置
查看>>
我的java学习之路--Reflect专题
查看>>
Android Intent的setClass和setClassName的区别
查看>>
php-fpm nginx 使用 curl 请求 https 出现 502 错误
查看>>
西宁海关首次对外展示截获500余件有害生物标本
查看>>
泸州移动能源产业园首片薄膜电池组件成功下线
查看>>
韩国瑜会见陆委会主委陈明通:别给高雄念紧箍咒
查看>>
交通部:加大人工售票力度保障农民工春运出行
查看>>
物联网的学术层、应用层和行为层的基本介绍
查看>>
初探github(一)
查看>>
源码分析之 LinkedList
查看>>
免SDK实现微信/支付宝转账打赏功能
查看>>
安卓.9图片制作
查看>>