使用ACR Task在雲中自動化生成容器鏡像

說到Azure Container Registry,想必你們都有必定的瞭解,ACR是Azure中提供的私有的容器映像倉庫。ACR Task是 ACR中的一個功能套件。 它爲 Linux、Windows 和 ARM 等平臺提供基於雲的容器映像生成,並能夠針對 Docker 容器自動執行 OS 和框架修補。 ACR Task不只可使用按需容器映像生成將「內部循環」開發週期擴展到雲,並且還能啓用源代碼更新、容器基礎映像或計時器更新所觸發的自動生成。 例如,使用基本映像更新觸發器,能夠自動執行 OS 和應用程序框架修補工做流,在遵照不可變容器原則的前提下維護安全的環境。
使用ACR Task能夠在如下狀況下自動進行容器構建:git

  • 檢測GitHub或Azure DevOps中的源代碼更改,並自動構建新映像並存儲在ACR中
  • 檢測基本映像更新並自動構建新映像並存儲在ACR中
  • 按照計劃,構建新映像並將其存儲在ACR中
  • 手動構建單個容器映像並將其按需推送到ACR中,而無需本地Docker Engine安裝
  • 使用基於多步驟、多容器的工做流擴展 ACR 任務的單一映像生成和推送功能

閒言少敘,下面咱們就一塊兒看一下如何使用ACR Task在提交代碼/代碼變動時自動生產容器鏡像:
完成本次實驗咱們須要準備一下先決條件:github

  • Azure Container Regisitry(ACR):能夠參考我以前的博文https://blog.51cto.com/wuyvzhang/2465520
  • GitHub帳戶:帶有能夠生產容器鏡像的Dockerfile
  • GitHub的我的訪問令牌(PTA)

建立Github我的訪問令牌:
若要在向 Git 存儲庫提交內容時觸發任務,ACR 任務須要用於訪問存儲庫的我的訪問令牌 (PAT)。 若是尚未 PAT,請按照如下步驟在 GitHub 中生成一個:
導航到 GitHub 上的 PAT 建立頁面 :https://github.com/settings/tokens/new
輸入令牌的簡短說明,例如「ACR Task Demo」,而後選擇 ACR 的做用域以訪問存儲庫。 要像本次博客同樣訪問公共存儲庫,請在「repo」下方,啓用「repo:status」和「public_repo」,而後點擊生產令牌:
使用ACR Task在雲中自動化生成容器鏡像docker

生產令牌後,咱們點擊複製並將其保存(在後面咱們會用到):
使用ACR Task在雲中自動化生成容器鏡像windows

建立生成任務:
現已完成啓用 ACR Task以讀取提交狀態和在存儲庫中建立 Webhook 所需的步驟,接下來能夠建立Task,以便在向存儲庫提交內容時觸發容器映像生成。
執行以下命令以建立對於的環境變量:安全

ACR_NAME=ACR_NAme
 GIT_USER=GIT_USER
 GIT_PAT=GIT_PAT

使用ACR Task在雲中自動化生成容器鏡像
使用以下命令建立ACR構建任務:
注意:{{.Run.ID}}構成標籤值。這樣能夠確保圖像被惟一標記。–Context僅連接到您的git repo。而後,設置要與–branch開關一塊兒使用的分支。–file是您的docker文件的位置和名稱。git-access-token是您先前從GitHub建立的令牌。
若是要建立Windows容器,則須要使用–platform 開關。若是要建立Linux容器,則不須要提供它。框架

az acr task create \
    --registry $ACR_NAME \
    --name buildhelloword \
    --image helloworld:{{.Run.ID}} \
    --context https://github.com/$GIT_USER/acrtaskdemo.git \
    --branch master \
    --file ACRTasks/dockerfile \
    --git-access-token $GIT_PAT \
    --platform windows

使用ACR Task在雲中自動化生成容器鏡像

測試生成任務
使用以下命令來手動出發ACR Task生產鏡像:
az acr task run --registry $ACR_NAME --name buildhelloword
使用ACR Task在雲中自動化生成容器鏡像
能夠看到,容器鏡像已經生產成功,而且已經上傳到ACR:
使用ACR Task在雲中自動化生成容器鏡像ide

測試了手動觸發構建之後,咱們來測試一下當提交代碼時自動觸發構建鏡像,在這裏我直接在GIThub上對文件進行編輯了,固然也能夠在本地進行編輯而後再推送到github
使用ACR Task在雲中自動化生成容器鏡像
當我編輯完提交之後,將觸發ACR Task建立的Webhook,並開始構建過程。若是想查看日誌,可使用如下命令:
az acr task logs --registry $DEV_ACR_NAME
使用ACR Task在雲中自動化生成容器鏡像測試

咱們也可使用如下命令來查看構建狀態:
az acr task list-runs --registry $DEV_ACR_NAME --output table
使用ACR Task在雲中自動化生成容器鏡像ui

同時咱們能夠在Azure Portal中查看對於ACR存儲庫中的容器鏡像:
使用ACR Task在雲中自動化生成容器鏡像3d

相關文章
相關標籤/搜索