在Docker容器中使用音频运行应用

在Docker容器中使用音频运行应用,第1张

在Docker容器中使用音频运行应用

我花了一些时间才知道需要什么。(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"`

在没有lxc标志的新docker版本中,应使用以下命令:

docker run -ti --rm     -v /dev/snd:/dev/snd      --privileged     myContainer sh -c "echo run something"`

的PulseAudio:
在这里我们需要基本

/dev/shm
/etc/machine-id
/run/user/$uid/pulse
。但这还不是全部(可能是由于Ubuntu及其过去的方式)。
XDG_RUNTIME_DIR
主机系统和docker容器中的环境变量必须相同。您可能还需要这样做,
/var/lib/dbus
因为某些应用程序正在从此处访问机器ID(可能仅包含指向“真实”机器ID的符号链接)。至少您可能需要隐藏的主文件夹
~/.pulse
来存储一些临时数据(对此我不确定)。

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
。当然,您可以将两者结合在一起,并与
xServer
ui转发一起使用,

只需提及:

  • 您可以在其中处理其中的大部分(全部都没有使用的ID)
    dockerfile
  • uid=$(id -u)
    得到的用户ID和GID与
    id -g
  • 使用此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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4897905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存