使用Docker Swarm 在特定节点上提供分布式服务?

使用Docker Swarm 在特定节点上提供分布式服务?

我有一堆使用套接字和 REST 的异构服务,需要手动重启。目前有 5 台机器正在运行 Windows 的 vmware 映像,我们将其称为 NODES。每个 NODE 都需要运行其中一些服务。让我们选择一个服务,我们将其称为 SRV,该服务特别需要访问机器上的 USB 设备。

我想从简单的开始,首先将这个 SRV dockerize...但是编排让我陷入了困境。

我认为 Docker Swarm 可以启动 5 个 SRV 实例,每个 NODE 一个。但我该如何指定它(或者我可以指定吗?)DCOS 是另一个选项吗?如果重要的话,所有实例都将运行 Windows 10。

答案1

您可以使用任何容器编排解决方案,例如 Docker swarm。关键在于如何确保容器可以访问主机系统 USB 设备。为此,对于普通的 docker 命令,请传递以下选项:--device=/dev/ttyUSB0

使用 docker run 命令。

对于 docker swarm,没有针对设备的服务。您必须使用以下选项:--mount type=bind

使用 docker service create 命令。例如:

docker service create --mount type=bind,source=/dev/ttyUSB0,target=/dev/ttyUSB0

从容器中,您可以控制和使用该设备。您必须将其替换/dev/ttyUSB0为您的实际 PCI 设备路径。

相关内容