J'essaie de docker une application de synthèse vocale pour partager le code avec d'autres développeurs, mais le problème que j'ai actuellement est que le conteneur Docker ne trouve pas la carte son sur ma machine hôte.
Lorsque j'essaie de lire un fichier wav dans mon conteneur Docker
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
Je suppose que le principal problème est que le conteneur Docker ne parvient pas à atteindre la carte son de mon hôte.
Jusqu'à présent, j'ai
--group-add audio
lors de l'exécution du conteneur en spécifiant docker run --group-add audio -t -i self/debian /bin/bash
Je ne sais pas si cela est même possible avec docker (je ne suis pas exactement sûr de la façon dont les ressources matérielles telles que les cartes son sont partagées avec les conteneurs). J'utilise un conteneur Debian sur un hôte Mac OS Yosemite.
Il est certainement possible, vous devez monter/dev/snd, voir comment Jess Frazelle lance un conteneur Spotify, à partir de
https://blog.jessfraz.com/post/docker-containers-on-the-desktop/
tu remarqueras
docker run -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
-e DISPLAY=unix$DISPLAY \ # pass the display
--device /dev/snd \ # sound
--name spotify \
jess/spotify
ou pour Chrome, à la fin
docker run -it \
--net Host \ # may as well YOLO
--cpuset-cpus 0 \ # control the cpu
--memory 512mb \ # max memory it can use
-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
-e DISPLAY=unix$DISPLAY \ # pass the display
-v $HOME/Downloads:/root/Downloads \ # optional, but Nice
-v $HOME/.config/google-chrome/:/data \ # if you want to save state
--device /dev/snd \ # so we have sound
--name chrome \
jess/chrome