将映像从Azure容器注册表部署到Azure Linux虚拟机

问题描述

我创建了一个构建管道,用于构建基于docker的项目。该图像被推送到Azure容器注册表。

我想要实现的是将映像部署到虚拟机,但是我不知道从哪里开始。例如,是否需要创建一个释放管道来在虚拟机上执行脚本,从而导致映像被拉出并运行?

希望有人可以帮助我解决这个问题。

解决方法

如果要自动化该过程,以通过Azure管道将映像部署到虚拟机。您需要创建管道,或将执行虚拟机上的停靠命令的其他代理作业或步骤添加到现有管道。请查看以下可能的解决方法:

1,在虚拟机上创建一个自托管代理。有关详细步骤,请参见教程here

然后,您可以添加其他代理作业或创建发布管道以在脚本任务中运行docker命令。并配置代理程序池以在自托管代理程序池上运行作业。

对于以下示例。我添加了一个额外的作业,并在powershell任务中执行docker命令以运行映像:

def electionsWinners(votes,k):
    mx = max(votes)
    return sum(1 for i in votes if k + i > mx) if k else int(votes.count(mx) == 1)

2,如果您不想创建自托管代理。您还可以尝试在管道中使用以下任务之一,以使您可以在目标虚拟机上运行停靠脚本。

PowerShell on Target Machines task

SSH Deployment task

,

例如我是否需要创建一个执行 虚拟机上的脚本,导致图像被拉出 跑?

实际上,是的。如您所说,您想在虚拟机中部署映像。这意味着您将VM视为docker服务器并在其中运行容器,然后需要在其中执行命令。因此,步骤如下:

  1. 安装和配置Docker服务器;
  2. 登录Azure容器注册表;
  3. 从Azure容器注册表中提取图像;
  4. 在VM中部署映像。

在我这边,用所有命令执行脚本要比分别执行命令更好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...