繁体   English   中英

Azure ACR 任务 API? 有一个应用程序在 docker 容器中运行,需要构建图像并将其推送到 ACR

[英]Azure ACR Tasks API? Have an application running in docker container that needs to to build and push images to ACR

应用程序使用 docker CLI 构建镜像,然后将其推送到 azure 容器注册表。 曾经使用 python 模块和 docker.sock 在 Kube.netes 上正常工作。 但是由于集群升级 docker 守护进程消失了。 猜测K8后端不再使用docker或已安装。 此外,由于 docker 在 kube.netes 中消失了(我认为它说的是 1.24,我想摆脱依赖 docker 的构建。

所以工作时的应用程序是运行在 docker 容器中的 python 应用程序。 它将获取 dockerfile 并构建它并将其推送到 azure 容器注册表。 有些文件通过 dockerfile 被推送到图像中,它们都存在于与 dockerfile 相同的目录中。

任何人都知道实现这一目标的不同方法?

我一直在查看 Azure ACR 任务,但我不太确定所有文件是如何复制到任务中的,并且找不到任何示例。

我可以确认运行 Azure ACR 任务(多任务或快速任务)将在执行命令时复制文件。 我们正在使用Azure ACR Quick Tasks来实现类似的目的。 如果您只是想执行相当于docker builddocker push的操作,Quick Tasks 应该也适合您。

为简单起见,我将列出快速任务的示例,因为这是我最常使用的。 从您的本地计算机尝试以下步骤以查看其工作原理。 只要机器经过正确验证,相同的步骤也适用于任何其他环境。

首先确保您位于 Dockerfile 目录中,然后:

  1. 使用az login向 Azure CLI 进行身份验证
  2. 使用az acr login --name myacr对 ACR 进行身份验证。
  3. 相应地替换值并运行az acr build --registry myacr -g myacr_rg --image myacr.azurecr.io/myimage:v1.0.
  4. 您的终端应该已经显示 Dockerfile 正在执行的所有步骤。 或者,您可以转到 ACR 并查看services>tasks>runs下的内容。 您应该会看到 Docker 构建任务的每一行都出现在那里。

注意:如果您以自动化方式运行此任务,并且还需要在映像构建期间访问内部/私有资源,则应考虑创建一个专用代理池并将其部署在您的 .NET/.NET 中,而不是使用共享/公共代理池。

就我而言,我使用 terraform 运行az acr build命令,您可以看到 Dockerfile 执行COPY命令没有任何问题。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM