Docker:JACK 服务器未运行

aga*_*hat 4 audio pulseaudio jack ros docker

我正在运行大量带有 ROS 的 docker 容器,用于控制机器人。其中一个容器必须通过sound_play包播放一些音频文件。但是它返回错误

Cannot connect to server socket err = No such file or directory  
Cannot connect to server request channel  
jack server is not running or cannot be started
Run Code Online (Sandbox Code Playgroud)

我能够aplay从容器内部读取音频 (.wav) 文件,我的声卡肯定被识别,我还尝试在特权模式下运行容器。我也尝试jackd在容器中单独安装并启动一个jack服务器,但得到错误

Cannot lock down 82274202 byte memory area (Cannot allocate memory).  
Bus error (core dumped)
Run Code Online (Sandbox Code Playgroud)

我对问题的理解是否正确?如果是这样,我怎样才能让 jack 服务器在容器内启动?

aga*_*hat 5

我通过安装jackd1而不是jackd2因为显然,jackd2 需要我无法提供给 docker 容器的实时优先级来解决它。jackd1虽然做到了。
我的 Dockerfile:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y jackd1
Run Code Online (Sandbox Code Playgroud)

运行命令:

docker run -it --rm --privileged=true --device=/dev/snd:/dev/snd myContainerName jackd -R -d alsa -d hw:1
Run Code Online (Sandbox Code Playgroud)

这将在您的容器中启动一个 jack 服务器。该sound_play节点的工作之后的罚款。

部分归功于http://crunchbang.org/forums/viewtopic.php?id=33530