如何在Docker中为Debian创建声音设备?

13

我正在使用各种Docker容器,这些容器本质上是建立在Debian sid上的。这些镜像缺少 /dev/snd/dev/snd/seq,这很合理,因为它们没有硬件音频卡。

我正在使用几个软件来生成MIDI文件,这些软件需要这些序列设备存在。它们不一定用于发送音频,但若声音设备不存在则代码在初始化时会崩溃。明确一点,我不需要在docker中生成音频信号,只需要这些存在即可让其他软件运行愉悦。

到目前为止,我的尝试是不断安装各种alsa包(alsa-utilsalsa-oss和其他包)以及尝试通过modprobe摆脱这个问题,但都没有成功。

在Docker容器内,即使是虚拟的,如何才能拥有有效的音频设备?


1
我几周前在运行Raspbian的树莓派上的Docker容器中设置Google Home。即使安装了声音驱动程序(alsa-utils),如果我不插入声音设备,Google Home也无法启动。根据您的问题,您已经理解了这一点。我能说的就是可能没有其他办法 :( - Swarup Donepudi
1
看看这个能否帮到你。你需要挂载来自主机的/dev/snd。https://blog.jessfraz.com/post/docker-containers-on-the-desktop/ - Tarun Lalwani
@TarunLalwani 我在其他地方看到过 --device /dev/snd 的参考,但这个指导是来自2015年的,而官方的Docker文档并没有提到 --device 是一个有效的选项,我认为这已经被弃用/移除了。 - FrobberOfBits
抱歉——我的错误;--device是有文件记录的,但在与Mac OS X桥接时仍不起作用,因为它使用CoreAudio。需要进一步挖掘 https://dev59.com/I2Uq5IYBdhLWcg3wBLw- - FrobberOfBits
2
我认为这个问题已经解决了。如果你只需要目录,只需将它们作为卷挂载到主机上的某个其他目录即可。https://dev59.com/el4b5IYBdhLWcg3wiSPV - mttdbrd
显示剩余9条评论
1个回答

1

我已经成功地通过在运行容器时添加设备来通过Docker获取声音(知道这不是同样的问题)。

docker run -it --device /dev/snd myimage

权限可能会很快变得复杂,您可能希望最初尝试使用--device /dev/snd以及--privileged,一旦它起作用,就逐渐降低特权。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接