我正在使用Azure DevOps,并具有一个Linux构建管道(ubuntu-16.04
)设置,该构建器可以构建代码,使用Docker Compose启动容器,然后使用这些容器运行集成测试。这一切都很好。
现在,我想设置一个执行相同操作的Windows构建pipline。但是,对于windows-2019
和win-1803
图像,当我执行docker stack up
时,都会收到以下错误消息:
图像操作系统“ linux”不能在该平台上使用
因此,我想将Docker安装在Windows模式下,并考虑使用以下方法将其切换到Linux容器:
DockerCli.exe" -SwitchLinuxEngine
或
"%ProgramFiles%\Docker\Docker\DockerCli.exe" -SwitchLinuxEngine
但是,DockerCli.exe
可执行文件似乎根本没有安装。
我唯一能想到的两件事是:
但是,这两项设置都需要很多工作,我真的不需要,我既不需要运行成本,也不需要维护它的工作。
是否有任何变通办法来在托管的Windows构建代理上运行Linux容器?
答案 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容器将非常方便,而无需考虑只能支持哪个代理。