Docker 群通用设备资源连接



Docker 帮助请求:我正在尝试将 Swarm 中的容器连接到/dev中的设备。在 docker 容器中运行时,连接通过设备映射正常工作,但是我们无法连接到 Swarm 节点中的设备。

该设备恰好是图形硬件,在我们的 Gstreamer 管道中使用 vaapi 驱动程序,位于此处:/dev/dri/renderD128,但这是一个通用问题,用于从群中的容器连接到任何设备。

我正在寻找有关通过Swarmkit通用资源映射到我们的设备的建议。

有关于Swarmkit和图形硬件的讨论,包括:

  • (问题)添加对 Swarmkit 通用资源 #33439 的支持: https://github.com/moby/moby/issues/33439
  • (合并 PR)添加通用资源 #5416:https://github.com/docker/docker.github.io/pull/5416

但是,我一直无法将这些提炼成解决方案。

一个 docker run 命令在在群中运行时成功连接到此设备,如下所示:

docker run -ti 
-e XDG_RUNTIME_DIR=/tmp 
--device=/dev/dri/card0:/dev/dri/card0 
--device=/dev/dri/renderD128:/dev/dri/renderD128 
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY 
<docker-image> bash

但同样,这是容器、群和设备映射的一般通用问题,与此特定设备无关。

我们使用的是 docker 撰写文件版本 3,并尝试了"device"选项,该选项按预期失败: https://docs.docker.com/compose/compose-file/#devices

"在 swarm 模式下部署堆栈时,此选项将被忽略 (版本3)撰写文件。

我感谢你的帮助。

你见过 https://github.com/NVIDIA/nvidia-docker/issues/141#issuecomment-356458450 吗?

在 17.12.0-CE 中,您可以配置 docker 守护程序以向 Swarm 公开您的 GPU。

使用"docker 服务"现在支持它,但是据我所知,docker-compose 中还没有 --generic-resources 等效项。

编辑:实际上在撰写3.5中支持:

generic_resources:
- discrete_resource_spec:
                kind: 'gpu'
                value: 2

[ https://github.com/docker/cli/commit/1ff73f867df382cb5a19df4579da3570f4daaff5 ]

最新更新