2016-06-21 8 views
3

Я запускаю множество контейнеров-докеров с ROS для управления роботом. Один из контейнеров должен воспроизводить некоторые аудиофайлы через пакет 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

Как вы запустите Docker контейнер? –

+0

Я использую docker-compose, давая/dev/snd:/dev/snd mapping в устройствах, а также попытался запустить его самостоятельно. –

ответ

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

Подключились к этой проблеме, попробуете исправление, когда оно будет выпущено и обновлено Вот. Благодаря! –