当前位置: 首页 > 知识库问答 >
问题:

在docker容器中使用音频运行应用程序

商同化
2023-03-14

其基本思想是运行带有音频和ui的应用程序(vlc、firefox、skype…)

我在使用pulseaudio搜索docker容器,但我找到的所有容器都在TCP上使用pulseaudio流。(应用程序的安全沙箱)

  • https://gist.github.com/hybris42/ce429de428e5af3a344a
  • https://github.com/jlund/docker-chrome-pulseaudio
  • https://github.com/tomparys/docker-skype-pulseaudio

共有1个答案

微生俊材
2023-03-14

我花了一段时间才发现需要什么。(Ubuntu)

我们从docker run命令docker run-ti--rm myContainer sh-c“echo run something”开始

ALSA:
我们需要/dev/snd和一些硬件访问。当我们把这个放在一起的时候

docker run -ti --rm \
    -v /dev/snd:/dev/snd \
    --lxc-conf='lxc.cgroup.devices.allow = c 116:* rwm' \
    myContainer sh -c "echo run something"`
docker run -ti --rm \
    -v /dev/snd:/dev/snd \
     --privileged \
    myContainer sh -c "echo run something"`
docker run -ti --rm \
    -v /dev/shm:/dev/shm \
    -v /etc/machine-id:/etc/machine-id \
    -v /run/user/$uid/pulse:/run/user/$uid/pulse \
    -v /var/lib/dbus:/var/lib/dbus \
    -v ~/.pulse:/home/$dockerUsername/.pulse \
    myContainer sh -c "echo run something"

在新的docker版本中,您可能需要添加--privileged
当然,您可以将两者结合起来,并与XServerui转发一起使用,如下所示:https://stackoverflow.com/a/28971413/2835523

只想提一下:

  • 您可以在DockerFile
  • 中处理大部分内容(都不需要使用id)
  • 使用uid=$(id-u)获取用户id和带有id-g
  • 的gid
  • 使用此ID创建docker用户
mkdir -p /home/$dockerUsername && \
echo "$dockerUsername:x:${uid}:${gid}:$dockerUsername,,,:/home/$dockerUsername:/bin/bash" >> /etc/passwd && \
echo "$dockerUsername:x:${uid}:" >> /etc/group && \
mkdir /etc/sudoers.d && \
echo "$dockerUsername ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$dockerUsername && \
chmod 0440 /etc/sudoers.d/$dockerUsername && \
chown ${uid}:${gid} -R /home/$dockerUsername
 类似资料:
  • 问题内容: 。 基本思想是使用音频和ui(vlc,firefox,skype等)运行应用程序 我正在使用pulseaudio搜索docker容器,但是找到了所有在tcp上使用pulseaudio流传输的容器。(应用程序的安全沙箱) https://gist.github.com/hybris42/ce429de428e5af3a344a https://github.com/jlund/docke

  • 我有一个react-app,它简单地显示hello-world消息,但我喜欢运行应用程序通过docker-container,但有这个问题。在此消息之后,进程停止,没有运行应用程序。 我不能理解我应该做什么,因为我有一个很小的应用程序,在Dockerfile中有基本代码 我需要安装webpack-dev-server吗,我尝试了,但得到了版本错误,如“手动添加服务器”的版本比已经安装的服务器低。所

  • 问题内容: 这个问题是我继续研究Docker的一部分,并且在某些方面跟进了我先前的问题之一。我现在已经了解了如何通过将一堆Docker容器链接在一起来获得完整的应用程序堆栈(实际上是微型VPS)。例如,可以创建一个堆栈,为Apache+ PHP5提供一堆扩展名+ Redis + MemCached+MySQL,它们都在Ubuntu上运行,无论是否带有附加数据容器,都可以轻松地序列化用户数据。 一切

  • 我正在测试一些与比特币相关的代码,为了测试它,我在docker容器中安装了比特币测试网盒。 我使用这个指南:https://registry.hub.docker.com/u/freewil/bitcoin-testnet-box/ 我没有任何问题地拉和运行码头工人。 但是,我无法编辑其目录中的bitcoin.conf文件,因为我没有安装像NANO这样的编辑器。 我想: 但它不起作用。我该怎么解决

  • 我有一个简单的rails应用程序,它有一个MongoDB后端。我使用Docker Compose在不同的容器中运行rails应用程序和MongoDB。当我使用默认的rails端口(3000)时,一切正常。 但是,如果我在端口8080上运行rails应用程序,而不是使用,并在我的中使用暴露端口8080,然后重建并推送图像,则只有MongoDB容器启动。我还更改了docker compose中的端口。