使用企業(yè)版實(shí)例構(gòu)建鏡像
容器鏡像服務(wù)企業(yè)版提供安全且高效的源代碼到容器鏡像的自動化持續(xù)集成流程,并支持基于Dockerfile規(guī)則觸發(fā)的自動構(gòu)建鏡像和鏡像倉庫提交功能。
前提條件
已創(chuàng)建容器鏡像服務(wù)企業(yè)版實(shí)例。具體操作,請參見創(chuàng)建企業(yè)版實(shí)例。
已準(zhǔn)備構(gòu)建鏡像的Dockerfile文件。
背景信息
容器鏡像構(gòu)建服務(wù)具備安全、穩(wěn)定、高效等特性:
安全:鏡像構(gòu)建時(shí),系統(tǒng)會將單個(gè)任務(wù)派發(fā)到歸屬用戶的獨(dú)占環(huán)境內(nèi)執(zhí)行構(gòu)建。
穩(wěn)定:由于使用用戶專屬的獨(dú)占環(huán)境,單代碼倉庫多次構(gòu)建的時(shí)間消耗較為穩(wěn)定。
智能加速:
系統(tǒng)默認(rèn)使用高效構(gòu)建工具BuildKit,具備強(qiáng)大的構(gòu)建能力(尤其針對多階段構(gòu)建場景),支持豐富的構(gòu)建特性。
系統(tǒng)托管了常用基礎(chǔ)鏡像。使用這些基礎(chǔ)鏡像,使構(gòu)建過程無需進(jìn)行任何鏡像拉取,大大縮減構(gòu)建時(shí)間。
系統(tǒng)使用遠(yuǎn)程構(gòu)建緩存來加速構(gòu)建過程。
容器鏡像構(gòu)建服務(wù)支持多種代碼托管平臺、加速鏡像制作等能力:
代碼托管平臺:支持以下代碼托管平臺。
代碼平臺
代碼平臺版本
綁定方式
觸發(fā)構(gòu)建限制
阿里云Codeup
全部
私人訪問令牌
無
Gitee
全部
Gitee OAuth授權(quán)
無
GitHub
僅支持GitHub個(gè)人版
GitHub OAuth授權(quán)
無
GitLab
全部
私人訪問令牌
無
Bitbucket
全部
Gitee OAuth授權(quán)
無
加速鏡像制作:系統(tǒng)支持制作按需加載的鏡像,支持在普通鏡像推送完成后,自動制作加速鏡像。具體操作,請參見按需加載容器鏡像。
步驟一:綁定源代碼平臺
構(gòu)建服務(wù)前,您需要綁定源代碼平臺。詳細(xì)介紹,請參見綁定源代碼托管平臺。
本地倉庫不支持鏡像構(gòu)建功能。
接入VPC內(nèi)的私有GitLab,請參見使用VPC安全構(gòu)建模式構(gòu)建容器鏡像。
步驟二:創(chuàng)建命名空間
在頂部菜單欄,選擇所需地域。
在左側(cè)導(dǎo)航欄,選擇實(shí)例列表。
在實(shí)例列表頁面單擊目標(biāo)企業(yè)版實(shí)例。
在企業(yè)版實(shí)例管理頁面選擇 。
在命名空間頁面單擊創(chuàng)建命名空間。
在創(chuàng)建命名空間對話框中設(shè)置命名空間名稱、是否自動創(chuàng)建倉庫、默認(rèn)倉庫類型。單擊確定。
步驟三:創(chuàng)建鏡像倉庫
鏡像加速僅支持標(biāo)準(zhǔn)版和高級版實(shí)例,建議您將基礎(chǔ)版實(shí)例升級至標(biāo)準(zhǔn)版和高級版。
創(chuàng)建鏡像倉庫,并綁定代碼倉庫,此代碼倉庫觸發(fā)的鏡像構(gòu)建都會推送到該鏡像倉庫下。
在頂部菜單欄,選擇所需地域。
在左側(cè)導(dǎo)航欄,選擇實(shí)例列表。
在實(shí)例列表頁面單擊目標(biāo)企業(yè)版實(shí)例。
在企業(yè)版實(shí)例管理頁面選擇 。
- 在鏡像倉庫單擊創(chuàng)建鏡像倉庫。
在倉庫信息配置向?qū)е性O(shè)置命名空間、倉庫名稱、倉庫類型、鏡像版本、鏡像加速、摘要、描述信息,單擊下一步。
在代碼源配置向?qū)е性O(shè)置代碼源、構(gòu)建設(shè)置、構(gòu)建規(guī)則設(shè)置,單擊創(chuàng)建鏡像倉庫。
參數(shù)
說明
代碼源
選擇代碼源。
構(gòu)建設(shè)置
代碼變更時(shí)自動構(gòu)建鏡像:當(dāng)分支有代碼提交后會自動觸發(fā)構(gòu)建規(guī)則。
海外源智能加速:構(gòu)建時(shí)會在海外機(jī)房構(gòu)建,構(gòu)建成功后推送到指定地域。如果您項(xiàng)目的Dockerfile文件需要從國外站點(diǎn)下載文件,但是跨境網(wǎng)絡(luò)不穩(wěn)定,您可以使用海外源智能加速。
不使用緩存:每次構(gòu)建鏡像時(shí)會強(qiáng)制重新拉取基礎(chǔ)依賴鏡像,可能會增加構(gòu)建時(shí)間。關(guān)閉不使用緩存,可以加速鏡像的構(gòu)建時(shí)間。
在鏡像倉庫頁面單擊目標(biāo)鏡像倉庫,您可以在鏡像倉庫管理頁面左側(cè)導(dǎo)航欄看到構(gòu)建,說明鏡像倉庫和源代碼倉庫綁定成功。
步驟四:構(gòu)建鏡像
如果您的鏡像倉庫管理頁面沒有構(gòu)建,說明綁定源代碼失敗,請參見步驟一重新綁定源代碼。
在頂部菜單欄,選擇所需地域。
在左側(cè)導(dǎo)航欄,選擇實(shí)例列表。
在實(shí)例列表頁面單擊目標(biāo)企業(yè)版實(shí)例。
在企業(yè)版實(shí)例管理頁面左側(cè)導(dǎo)航欄,選擇 。
在鏡像倉庫頁面單擊目標(biāo)倉庫右側(cè)操作列中的管理。
單擊左側(cè)導(dǎo)航欄中的構(gòu)建,在構(gòu)建規(guī)則設(shè)置區(qū)域單擊添加規(guī)則,在構(gòu)建信息配置向?qū)е性O(shè)置參數(shù),然后單擊下一步。
參數(shù)
說明
類型
設(shè)置源代碼倉庫的類型,可以是Branch或Tag。
Branch/Tag
選擇或者填寫B(tài)ranch/Tag,支持正則規(guī)則。當(dāng)正則規(guī)則為release-(?<imageTag>\w*)時(shí),將識別release-v1源代碼變更并自動構(gòu)建版本為v1的鏡像(不支持立即構(gòu)建),更多信息,請參見正則表達(dá)式命名捕獲組。
說明設(shè)置正則規(guī)則后僅支持系統(tǒng)自動構(gòu)建,不支持手動立即構(gòu)建。
構(gòu)建上下文目錄
設(shè)置Dockerfile文件所在的目錄。指的是相對目錄,以Branch/Tag的根目錄為父目錄,例如您的Branch為master,您的Dockerfile文件放在master下,則您的Dockerfile目錄為/。
Dockerfile文件名
設(shè)置Dockerfile文件名,默認(rèn)為Dockerfile。
在鏡像版本配置向?qū)е性O(shè)置參數(shù),單擊保存,然后單擊下一步。
說明單擊新增配置,可以增加鏡像版本,最多可以設(shè)置3個(gè)鏡像版本。
參數(shù)
說明
鏡像版本
設(shè)置鏡像Tag,例如latest。支持命名捕獲,例如使用Branch/Tag中捕獲的內(nèi)容。
時(shí)間
推送源代碼的東八區(qū)(UTC+8)時(shí)間,有兩種格式可供選擇,例如20201015和202010151613。
說明該參數(shù)為可選項(xiàng),當(dāng)選中該參數(shù)后系統(tǒng)僅支持自動構(gòu)建,不支持手動立即構(gòu)建。
Commit ID
最近一次推送代碼的Commit ID,默認(rèn)取前6位,可以滑動下方的滑塊設(shè)置位數(shù)。
說明該參數(shù)為可選項(xiàng),當(dāng)選中該參數(shù)后系統(tǒng)僅支持自動構(gòu)建,不支持手動立即構(gòu)建。
在構(gòu)建配置配置向?qū)е性O(shè)置構(gòu)建參數(shù),然后單擊確定。
參數(shù)
說明
構(gòu)建架構(gòu)
選擇構(gòu)建架構(gòu),支持并行構(gòu)建,最終形成一個(gè)鏡像版本對應(yīng)多個(gè)架構(gòu)鏡像。
構(gòu)建參數(shù)
鏡像構(gòu)建運(yùn)行時(shí)參數(shù),構(gòu)建參數(shù)由區(qū)分大小寫的鍵值對組成,您最多可以設(shè)置20個(gè)構(gòu)建參數(shù)。您可以設(shè)置構(gòu)建參數(shù),該構(gòu)建參數(shù)會修改Dockerfile文件中環(huán)境變量,使同一個(gè)Dockerfile文件呈現(xiàn)多種狀態(tài)。
觸發(fā)構(gòu)建規(guī)則。
您可以通過以下兩種方式觸發(fā)構(gòu)建規(guī)則:
在構(gòu)建頁面構(gòu)建規(guī)則設(shè)置區(qū)域單擊目標(biāo)構(gòu)建規(guī)則操作列下的立即構(gòu)建,觸發(fā)構(gòu)建規(guī)則。
向代碼倉庫的master分支提交代碼,觸發(fā)構(gòu)建規(guī)則。
說明在構(gòu)建頁面構(gòu)建日志區(qū)域單擊目標(biāo)構(gòu)建任務(wù)操作列的取消,可以取消構(gòu)建任務(wù)。
在構(gòu)建頁面構(gòu)建日志區(qū)域單擊目標(biāo)構(gòu)建任務(wù)操作列的日志,可以查看構(gòu)建過程日志。
在左側(cè)導(dǎo)航欄單擊鏡像版本,您可以看到構(gòu)建的鏡像,說明構(gòu)建鏡像成功。
構(gòu)建鏡像示例一:基于固定分支main構(gòu)建鏡像(支持手動立即構(gòu)建)
基于固定分支main構(gòu)建鏡像的規(guī)則參數(shù)配置示例如下:
類型:Branch
Branch/Tag:main
構(gòu)建上下文目錄:/
Dockerfile文件名:Dockerfile
鏡像版本:latest
當(dāng)main分支上源代碼變更或手動單擊立即構(gòu)建時(shí),會觸發(fā)鏡像構(gòu)建。構(gòu)建的工作目錄是/,文件為構(gòu)建工作目錄下名為Dockerfile的文件。鏡像構(gòu)建完成后生成的鏡像版本為latest,構(gòu)建規(guī)則如下圖所示。
構(gòu)建鏡像示例二:基于正則規(guī)則匹配分支構(gòu)建鏡像(不支持手動立即構(gòu)建)
基于正則規(guī)則匹配分支構(gòu)建鏡像的規(guī)則參數(shù)配置示例如下:
類型:Branch
Branch/Tag:release-(?<imageTag>\w*)
構(gòu)建上下文目錄:/
Dockerfile文件名:Dockerfile
鏡像版本:${imageTag}
時(shí)間:yyyyMMddHHmm
Commit ID:30
當(dāng)以release-
開頭的分支源代碼變更時(shí),會觸發(fā)鏡像構(gòu)建。構(gòu)建的工作目錄是/,文件為構(gòu)建工作目錄下名為Dockerfile的文件。
以release-v1
的分支源代碼變更為例,正則規(guī)則release-(?<imageTag>\w*)
會將分支名中的v1
捕獲給變量imageTag
,并在鏡像版本中使用該變量。鏡像構(gòu)建完成后生成的鏡像版本為v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45
,構(gòu)建規(guī)則如下圖所示。
相關(guān)操作
鏡像構(gòu)建完成后,您還可以進(jìn)行以下操作:
您可以在ACK集群中免密拉取鏡像。具體操作,請參見使用免密組件拉取容器鏡像。
您可以在ACK集群中使用鏡像創(chuàng)建應(yīng)用。具體操作,請參見創(chuàng)建無狀態(tài)工作負(fù)載Deployment。
您可以在ACK集群中使用P2P加速功能提升鏡像拉取速度。具體操作,請參見在ACK或ACK Serverless集群中使用P2P加速。