自定義鏡像
在SQL或Python開發(fā)過程中,會(huì)存在較為復(fù)雜的業(yè)務(wù)邏輯,依賴三方包眾多,引用資源復(fù)雜,因此MaxCompute推出自定義鏡像管理功能,您可自由、靈活地使用Docker鏡像來構(gòu)建自己所需的完整開發(fā)環(huán)境,并在MaxCompute SQL、Python(PyODPS或MaxFrame)開發(fā)中使用,本文將詳細(xì)介紹MaxCompute自定義鏡像功能使用流程。
前提條件
已成功安裝Docker。
Linux環(huán)境:可以參考Docker官方文檔安裝Docker。
macOS或Windows環(huán)境:
個(gè)人開發(fā)者:可以使用Docker Desktop。
未購買過授權(quán)的企業(yè)用戶:推薦使用開源的Rancher Desktop。
已為對(duì)應(yīng)賬號(hào)或用戶授予RAM角色讀取權(quán)限、ACR(容器鏡像服務(wù))操作權(quán)限和MaxCompute自定義鏡像操作權(quán)限。具體如下:
授權(quán)使用場景
操作賬號(hào)類型
權(quán)限要求
指導(dǎo)鏈接
RAM角色讀取權(quán)限
阿里云賬號(hào)(推薦)
阿里云賬號(hào)默認(rèn)擁有RAM角色讀取權(quán)限,無需額外授權(quán)。
不涉及
RAM用戶
授予AliyunRAMReadOnlyAccess權(quán)限。
ACR操作使用權(quán)限
阿里云賬號(hào)(推薦)
阿里云賬號(hào)默認(rèn)擁有ACR操作所有權(quán)限,無需額外授權(quán)。
不涉及
RAM用戶
如果您使用RAM用戶操作ACR,需要為RAM用戶授予AliyunContainerRegistryReadOnlyAccess權(quán)限。
MaxCompute自定義鏡像操作權(quán)限
阿里云賬號(hào)(推薦)
阿里云賬號(hào)默認(rèn)擁有MaxCompute的自定義鏡像查看、添加、刪除等所有權(quán)限,無需額外授權(quán)。
不涉及
RAM用戶
如果您使用RAM用戶操作MaxCompute自定義鏡像,需要按需為RAM用戶授予對(duì)應(yīng)權(quán)限。
使用限制
鏡像大小:MaxCompute自定義鏡像中,允許創(chuàng)建的單個(gè)鏡像最大規(guī)格為10 GB。
鏡像數(shù)量:MaxCompute單租戶最多可上傳10個(gè)鏡像。
ACR版本要求:當(dāng)前僅支持規(guī)格為標(biāo)準(zhǔn)版或高級(jí)版的ACR企業(yè)版實(shí)例。
CPU架構(gòu)要求:構(gòu)建鏡像時(shí)請(qǐng)使用x86_64架構(gòu)CPU,目前暫不支持macOS M系列、ARM等非x86_64架構(gòu)CPU。
庫版本要求:MaxCompute 作業(yè)運(yùn)行環(huán)境基本對(duì)標(biāo)CentOS 7,構(gòu)建鏡像時(shí)請(qǐng)盡可能使用兼容CentOS 7系統(tǒng)的安裝包版本,基礎(chǔ)鏡像中yum源已配置為阿里云CentOS 7鏡像源地址。
鏡像內(nèi)文件目錄操作限制:使用pip或yum等安裝包時(shí),請(qǐng)勿將個(gè)人文件放入
/home/admin、/usr/local/lib、/usr/ali、/apsara
目錄中。因?yàn)閱?dòng)容器時(shí),MaxCompute將掛載運(yùn)行環(huán)境至這些目錄,會(huì)導(dǎo)致覆蓋掉鏡像目錄中原有的內(nèi)容。
步驟一:在Docker中構(gòu)建自定義鏡像
您可根據(jù)MaxCompute提供的基礎(chǔ)鏡像通過DockerFile的方式自行構(gòu)建自定義鏡像。MaxCompute基礎(chǔ)鏡像地址為registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest
,基礎(chǔ)鏡像中提供Python3.7、Python3.11、pip和yum等基礎(chǔ)環(huán)境。
基于MaxCompute基礎(chǔ)鏡像構(gòu)建自定義鏡像的DockerFile文件,代碼如下:
#使用MaxCompute基礎(chǔ)鏡像 From registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest #安裝系統(tǒng)依賴 RUN yum install vi -y #安裝第三庫 RUN /usr/ali/python3.7/bin/python3 -m pip install --no-cache-dir pandas
基于DockerFile打包鏡像。
sudo docker build -f DockerFile -t <image_name>:<tag> .
參數(shù)說明如下:
image_name:自定義鏡像名稱。
tag:自定義鏡像版本。
步驟二:上傳自定義鏡像至ACR
登錄容器鏡像服務(wù)控制臺(tái),在ACR中創(chuàng)建鏡像倉庫。具體操作請(qǐng)參見使用企業(yè)版實(shí)例構(gòu)建鏡像,其中重點(diǎn)參數(shù)配置如下:
重要目前僅支持將自定義鏡像上傳至規(guī)格為標(biāo)準(zhǔn)版或高級(jí)版的ACR企業(yè)版實(shí)例中。
步驟
參數(shù)名
描述
創(chuàng)建企業(yè)版實(shí)例
實(shí)例規(guī)格
選擇標(biāo)準(zhǔn)版或高級(jí)版。
創(chuàng)建鏡像倉庫
代碼源
選擇本地倉庫
將構(gòu)建好的自定義鏡像上傳至同賬號(hào)下的ACR中。
在左側(cè)導(dǎo)航欄倉庫管理 > 鏡像倉庫,并進(jìn)入對(duì)應(yīng)的鏡像倉庫。
根據(jù)鏡像倉庫基本信息頁簽中的鏡像指南,在Docker環(huán)境中將自定義鏡像上傳至ACR鏡像倉庫。
(可選)若您使用的機(jī)器位于VPC網(wǎng)絡(luò),需要執(zhí)行以下操作:
為已創(chuàng)建的企業(yè)版實(shí)例配置專有網(wǎng)絡(luò)的訪問控制,以便與企業(yè)版實(shí)例進(jìn)行連接。詳情請(qǐng)參見配置專有網(wǎng)絡(luò)的訪問控制。
在Docker環(huán)境中操作ACR企業(yè)版實(shí)例時(shí),域名中均需增加vpc。例如:下述命令中需要將
acr-test-registry.cn-wulanchabu.cr.aliyuncs.com
修改為acr-test-registry-vpc.cn-wulanchabu.cr.aliyuncs.com
。$ docker login --username=***@test.aliyunid.com acr-test-registry.cn-wulanchabu.cr.aliyuncs.com
步驟三:添加自定義鏡像至MaxCompute
關(guān)聯(lián)一個(gè)ACR中已經(jīng)存在的鏡像,以便在MaxCompute中統(tǒng)一管理開發(fā)鏡像。
登錄MaxCompute控制臺(tái),在左上角選擇地域。
在左側(cè)導(dǎo)航欄選擇租戶管理 > 鏡像管理后,單擊用戶自定義鏡像頁簽。
在用戶自定義鏡像頁簽中單擊創(chuàng)建鏡像,并在添加鏡像對(duì)話框中配置如下參數(shù)。
說明首次創(chuàng)建鏡像時(shí),請(qǐng)?jiān)趶棾龅?b data-tag="uicontrol" id="d20cf8c64b736" class="uicontrol">MaxCompute服務(wù)關(guān)聯(lián)角色對(duì)話框中單擊確認(rèn),系統(tǒng)將會(huì)自動(dòng)創(chuàng)建一個(gè)用于訪問ACR資源的服務(wù)關(guān)聯(lián)角色。
參數(shù)名
描述
鏡像名稱
自定義鏡像名稱,后續(xù)MaxCompute SQL、PyODPS、MaxFrame開發(fā)中會(huì)用到。
鏡像類型
ACR鏡像類型,目前僅支持ACR企業(yè)版鏡像。
企業(yè)版鏡像實(shí)例
選擇ACR中已創(chuàng)建的企業(yè)鏡像實(shí)例。
鏡像命名空間
選擇ACR中已創(chuàng)建的企業(yè)鏡像命名空間。
鏡像倉庫
選擇ACR中已創(chuàng)建的企業(yè)鏡像倉庫。
鏡像版本
選擇您在ACR中上傳的鏡像版本。
鏡像描述
為本次添加的鏡像增加相關(guān)描述。
單擊確定,完成自定義鏡像的創(chuàng)建,隨后您可在自定義鏡像列表中查看已創(chuàng)建的自定義鏡像。
步驟四:使用自定義鏡像
您可在MaxCompute SQL UDF、PyODPS及MaxFrame開發(fā)中使用自定義鏡像。
每個(gè)開發(fā)作業(yè)僅可指定一個(gè)鏡像,否則會(huì)造成鏡像沖突問題。
調(diào)用UDF時(shí),支持在SQL會(huì)話(Session)級(jí)別使用Flag指定所依賴的鏡像和Python版本,命令如下:
set odps.sql.python.version=cp37; set odps.session.image = <鏡像名稱>;
在PyODPS開發(fā)中,支持使用execute或persist方法的image參數(shù)指定已有鏡像。命令如下:
說明若您需要在PyODPS中引用鏡像進(jìn)行開發(fā),請(qǐng)升級(jí)PyODPS至V0.11.5或以上版本。
image='<鏡像名稱>'
MaxFrame開發(fā)中,支持在當(dāng)前作業(yè)開發(fā)中指定已有鏡像,相關(guān)參數(shù)如下:
config.options.sql.settings = { "odps.session.image": "<鏡像名稱>" }