在 Azure DevOps Windows 托管的生成代理中运行 Linux 容器

Coc*_*lla 5 windows docker docker-compose docker-swarm azure-devops

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

现在我想设置一个做同样事情的 Windows 构建管道。但是,对于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 容器?

Mer*_*SFT 4

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

首先,查看 Windows 托管代理上安装的镜像列表:Windows 托管代理中的 Docker 镜像Server 上的 Docker EE 根本不支持 Linux 容器。因此,不可能在 Hosted Win-1803 代理上构建 Linux docker 映像。它只能构建Windows docker镜像

到目前为止,唯一的两种解决方法是使用基于 Windows 计算机的自托管代理,或者运行具有两个独立代理作业的构建(在托管 Linux 代理上运行的一个代理作业与另一个代理作业之间来回传递构建工件)在托管 Windows 代理上运行)。

但由于这两种解决方法对您来说都不方便,因此没有任何其他解决方法可以实现您想要的。

另外,我们的官方论坛上也提出了这样的建议功能:Support for Docker with Linux Containers on Windows (LCOW) on Hosted Agent Pool。您可以在那里投票和评论,我们的产品组团队将定期审核这些建议并考虑将其作为开发者路线图。如果这个功能能够成为现实,我想构建Linux Container将会非常方便,而无需考虑只能支持哪个agent。