如何在远程Windows引擎上运行Docker命令

时间:2018-07-19 19:51:05

标签: docker docker-machine

我正在努力将Docker集成到我们的TeamCity构建过程中,以便我可以创建一个运行“ docker构建”的任务,以根据我们的代码创建映像。现在,我们所有的构建代理都可以在Windows Server 2008或Windows Server 2012上运行,而这两个都不能运行Docker。我们有机会获得一台Windows Server 2016构建计算机的许可证,但是我想知道是否有一种方法可以在发出 docker 命令的同时在计算机上运行Docker Engine从其他构建代理。

这是我到目前为止所考虑的:

  • Docker Toolkit:这是在旧系统上运行Docker的一种方法,但是它启动了运行Linux的本地VirtualBox VM,因此它只能运行Linux容器。我需要能够构建和运行Windows容器。
  • Docker Machine:这是与远程Docker引擎对话的一种方式。但是,根据this open bug,由于安全性的实现,看来Docker Machine只能够与Linux主机上的远程引擎通信。这是一个老问题,但我找不到任何迹象表明此限制已被删除。
  • Docker本身使用客户端/服务器架构,但是如果不使用Docker Machine之类的东西,我找不到有关如何与远程引擎通信的文档。

除了我们将所有构建代理升级到Windows 10或Windows Server 2016之外,我还有什么想念的,还是我很不幸?

1 个答案:

答案 0 :(得分:2)

您可以从其他构建代理开始使用远程Windows Server 2016实例。

Docker允许通过tcp公开Docker引擎(又名Daemon)。在这种情况下,尤其是当主机可公开访问时,您应该考虑使用客户端/服务器证书配置身份验证。可以在官方文档https://docs.docker.com/engine/security/https/中找到详细信息,但是您可以在https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/上找到Windows Server上的特定文章。

关于使用客户端连接到远程Docker Engine的方面,请使用https://docs.docker.com/engine/reference/commandline/cli/中所述的-H tls://<host>:<port>参数(或参见https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/#testtlsconnection中提供的示例)。 / p>