【发布时间】:2017-04-26 06:58:51
【问题描述】:
我正在尝试将文本转语音应用程序 docker 化以与其他开发人员共享代码,但是我现在遇到的问题是 docker 容器在我的主机上找不到声卡。
当我尝试在我的 docker 容器中播放 wav 文件时
root@3e9ef1e869ea:/# aplay Alesis-Fusion-Acoustic-Bass-C2.wav
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:722: audio open error: No such file or directory
我猜主要问题是 docker 容器无法访问我主机上的声卡。
到现在为止
- 我在我的内部安装了 alsa-utils 和大多数 alsa 依赖项 码头集装箱。
- 在运行时添加了
--group-add audio容器通过指定docker run --group-add audio -t -i self/debian /bin/bash
我不确定 docker 是否可以做到这一点(我不确定声卡等硬件资源是如何与容器共享的)。我在 Mac OS Yosemite 主机上使用 debian 容器。
【问题讨论】:
-
对于 Alsa,您只需要:
--device /dev/snd。但是如果你在容器内使用非 root 用户,你必须给它访问音频设备的权限,所以在你的 Dockerfile 中输入:RUN usermod -a -G audio USERNAME。