docker-compose设备通配符

时间:2019-06-04 09:34:59

标签: docker docker-compose

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

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

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

任何人都知道,如何通过docker-compose实现这一目标?我不想使用“特权”模式。

谢谢! 马丁

1 个答案:

答案 0 :(得分:1)

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

如果直接使用docker命令,请参见this

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

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

对于撰写,似乎2.3可以支持(我不确定为什么3个不支持,也许需要时间),请参阅this

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