使用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

相关文章
相关标签/搜索