如何在远程 Windows 引擎上 运行 Docker 命令
How to run Docker commands on remote Windows engine
我正在努力将 Docker 集成到我们的 TeamCity 构建过程中,以便我可以创建一个 运行 是 "docker build" 的任务,以从我们的代码创建图像。现在,我们所有的构建代理 运行 在 Windows Server 2008 或 Windows Server 2012 上,两者都不能 运行 Docker。我们有机会获得一台 Windows Server 2016 构建机器的许可证,但我想知道是否有办法 运行 Docker Engine on that 机器,同时从其他构建代理发出 docker 命令。
以下是我到目前为止的考虑:
- Docker 工具包:这是在遗留系统上 运行 Docker 的一种方法,但它会启动本地 VirtualBox VM 运行ning Linux因此它只能 运行 Linux 个容器。我需要能够构建 运行 Windows 容器。
- Docker 机器:这是一种与远程 Docker 引擎对话的方式。然而,根据 this open bug,由于安全实施,Docker 机器似乎只能与 Linux 主机上的远程引擎通信;这是一个老问题,但我找不到任何迹象表明此限制已被删除。
- Docker 本身使用 client/server 架构,但我找不到任何关于如何在不使用 Docker 机器的情况下与远程引擎通信的文档。
还有什么我遗漏的吗,或者我只是运气不好,除非我们将所有构建代理升级到 Windows 10 或 Windows Server 2016?
您可以开始使用来自其他构建代理的远程 Windows Server 2016 实例。
Docker 允许通过 tcp 公开 Docker 引擎(又名守护进程)。在这种情况下,尤其是当主机可公开访问时,您应该考虑使用 client/server 证书配置身份验证。可以在 https://docs.docker.com/engine/security/https/, but you may find the Windows Server specific article at https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/ 更有帮助的官方文档中找到详细信息。
关于您使用客户端连接到远程 Docker 引擎的方面,请使用 -H tls://<host>:<port>
参数,如 https://docs.docker.com/engine/reference/commandline/cli/ (or see the example provided at https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/#testtlsconnection 中所述)。
我正在努力将 Docker 集成到我们的 TeamCity 构建过程中,以便我可以创建一个 运行 是 "docker build" 的任务,以从我们的代码创建图像。现在,我们所有的构建代理 运行 在 Windows Server 2008 或 Windows Server 2012 上,两者都不能 运行 Docker。我们有机会获得一台 Windows Server 2016 构建机器的许可证,但我想知道是否有办法 运行 Docker Engine on that 机器,同时从其他构建代理发出 docker 命令。
以下是我到目前为止的考虑:
- Docker 工具包:这是在遗留系统上 运行 Docker 的一种方法,但它会启动本地 VirtualBox VM 运行ning Linux因此它只能 运行 Linux 个容器。我需要能够构建 运行 Windows 容器。
- Docker 机器:这是一种与远程 Docker 引擎对话的方式。然而,根据 this open bug,由于安全实施,Docker 机器似乎只能与 Linux 主机上的远程引擎通信;这是一个老问题,但我找不到任何迹象表明此限制已被删除。
- Docker 本身使用 client/server 架构,但我找不到任何关于如何在不使用 Docker 机器的情况下与远程引擎通信的文档。
还有什么我遗漏的吗,或者我只是运气不好,除非我们将所有构建代理升级到 Windows 10 或 Windows Server 2016?
您可以开始使用来自其他构建代理的远程 Windows Server 2016 实例。
Docker 允许通过 tcp 公开 Docker 引擎(又名守护进程)。在这种情况下,尤其是当主机可公开访问时,您应该考虑使用 client/server 证书配置身份验证。可以在 https://docs.docker.com/engine/security/https/, but you may find the Windows Server specific article at https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/ 更有帮助的官方文档中找到详细信息。
关于您使用客户端连接到远程 Docker 引擎的方面,请使用 -H tls://<host>:<port>
参数,如 https://docs.docker.com/engine/reference/commandline/cli/ (or see the example provided at https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/#testtlsconnection 中所述)。