run apps using audio in a docker container

前端 未结 4 855
失恋的感觉
失恋的感觉 2020-12-12 14:53

This question is inspired by Can you run GUI apps in a docker container?.

The basic idea is to run apps with audio and ui (vlc, firefox, skype, ...)

I was se

4条回答
  •  不知归路
    2020-12-12 15:18

    Assuming pulseaudio is installed on host and in image, one can provide pulseaudio sound over tcp with only a few steps. pulseaudio does not need to be restarted, and no configuration has to be done on host or in image either. This way it is included in x11docker, without the need of VNC or SSH:

    First, find a free tcp port:

    read LOWERPORT UPPERPORT < /proc/sys/net/ipv4/ip_local_port_range
    while : ; do
      PULSE_PORT="`shuf -i $LOWERPORT-$UPPERPORT -n 1`"
      ss -lpn | grep -q ":$PULSE_PORT " || break
    done
    

    Get ip adress of docker daemon. I always find it being 172.17.42.1/16

    ip -4 -o a | grep docker0 | awk '{print $4}'
    

    Load pulseaudio tcp module, authenticate connection to docker ip:

    PULSE_MODULE_ID=$(pactl load-module module-native-protocol-tcp port=$PULSE_PORT auth-ip-acl=172.17.42.1/16)
    

    On docker run, create environment variable PULSE_SERVER

    docker run -e PULSE_SERVER=tcp:172.17.42.1:$PULSE_PORT yourimage
    

    Afterwards, unload tcp module. (Note: for unknown reasons, unloading this module can stop pulseaudio daemon on host):

    pactl unload-module $PULSE_MODULE_ID
    

    Edit: How-To for ALSA and Pulseaudio in container

提交回复
热议问题