2016-06-21 108 views
3

我正在運行一系列帶有ROS的docker容器,用於控制機器人。其中一個容器必須通過sound_play包來播放一些音頻文件。然而,它返回錯誤Docker:JACK服務器沒有運行

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 

我能夠aplay(.WAV)從容器內的文件,我的聲卡肯定是公認的音頻,而我自己也嘗試運行在特權模式下的容器。我也試圖在容器中分別安裝jackd並啓動插孔服務器,但得到的錯誤

Cannot lock down 82274202 byte memory area (Cannot allocate memory). 
Bus error (core dumped) 

是我對問題的理解,甚至是否正確?如果是這樣,我怎樣才能讓傑克服務器在容器內啓動?

+0

如何啓動泊塢箱? –

+0

我使用docker-compose,在設備中給/ dev/snd:/ dev/snd映射,並且也嘗試了單獨運行它。 –

回答

3

我通過安裝jackd1而不是jackd2解決了問題,因爲很明顯,jackd2需要實時優先級,這是我無法提供給碼頭集裝箱的。 jackd1雖然做到了。
我Dockerfile:

FROM ubuntu:14.04 
RUN apt-get update && apt-get install -y jackd1 

運行命令:

docker run -it --rm --privileged=true --device=/dev/snd:/dev/snd myContainerName jackd -R -d alsa -d hw:1 

這將開始在容器中的插孔服務器。之後,sound_play節點正常工作。

部分信用額度http://crunchbang.org/forums/viewtopic.php?id=33530

+0

對於我所看到的,這似乎與https://github.com/docker/docker/issues/13983有關,也許你可以在jackd2修復後再試一次 –

+0

已經訂閱了這個問題,當它發佈並更新時會嘗試修復這裏。謝謝! –