在Azure DevOps Windows托管的构建代理中运行Linux容器

时间:2019-08-30 19:49:59

标签: windows docker docker-compose azure-devops docker-swarm

我正在使用Azure DevOps,并具有一个Linux构建管道(ubuntu-16.04)设置,该构建器可以构建代码,使用Docker Compose启动容器,然后使用这些容器运行集成测试。这一切都很好。

现在,我想设置一个执行相同操作的Windows构建pipline。但是,对于windows-2019win-1803图像,当我执行docker stack up时,都会收到以下错误消息:

  

图像操作系统“ linux”不能在该平台上使用

因此,我想将Docker安装在Windows模式下,并考虑使用以下方法将其切换到Linux容器:

DockerCli.exe" -SwitchLinuxEngine

"%ProgramFiles%\Docker\Docker\DockerCli.exe" -SwitchLinuxEngine

但是,DockerCli.exe可执行文件似乎根本没有安装。

我唯一能想到的两件事是:

  1. 设置自托管构建代理
  2. 以某种方式在其他地方启动所需的容器

但是,这两项设置都需要很多工作,我真的不需要,我既不需要运行成本,也不需要维护它的工作。

是否有任何变通办法来在托管的Windows构建代理上运行Linux容器?

1 个答案:

答案 0 :(得分:0)

  

在Azure DevOps Windows托管的构建代理中运行Linux容器

首先,查看列出的Windows托管代理上安装的图像:Docker images in Windows hosted agent服务器上的Docker EE根本不支持Linux容器。因此,不可能在Hosted Win-1803代理上构建Linux docker映像。 它只能构建Windows docker映像

直到现在,仅有的两种解决方法是使用基于Windows机器的自托管代理,或者运行具有两个单独的代理作业的构建(在托管Linux代理上运行的一个代理作业之间来回传递构建工件)另一个在Hosted Windows代理上运行。

但是,由于这两种变通办法都不方便您使用,因此没有其他变通办法可以实现您想要的目标。

此外,我们的官方论坛Support for Docker with Linux Containers on Windows (LCOW) on hosted agent pool上也提出了这样的建议功能。您可以在此处进行投票和评论,我们的产品小组会定期审查这些建议,并考虑将其作为开发人员路线图。如果此功能可以实现,那么我认为构建Linux容器将非常方便,而无需考虑只能支持哪个代理。