首页 > 解决方案 > docker-compose 设备通配符

问题描述

我需要将所有视频或音频或 USB 设备传递给容器。

devices:
  - "/dev/video*:/dev/video*"

这显然行不通。但我是容器运行的平台,可能有 2、3 或更多视频源,我需要将所有这些都传递到 docker 容器中。

任何人都有一个想法,如何使用 docker-compose 实现这一点?我不想使用“特权”模式。

谢谢!马丁

标签: dockerdocker-compose

解决方案


您可以映射/dev到容器,并为设备添加 cgroups 权限。

如果直接使用 docker 命令,看这个

docker run -it --rm -v /dev:/dev --device-cgroup-rule='c *:* rmw' ubuntu:18.04 /bin/bash

*如果您想限制某些设备,可以将上述命令中的第一个更改为主要设备号。

对于 compose,它似乎2.3可以支持这个(我不确定为什么 3 不支持,可能需要时间),看这个

version: "2.3"
services:
  backend:
     image: ubuntu:18.04
     device_cgroup_rules:
       - 'c *:* rmw'
     volumes:
       - /dev:/dev

推荐阅读