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