如何在Docker容器中运行GUI应用程序?
是否有任何图像设置vncserver或某些东西,以便你可以 - 例如 - 在Firefox周围添加一个额外的speedbump沙箱?
ffmpeg当我捕捉屏幕时,我想录制音频.我在使用时遇到的错误alsa是我的图像没有声卡-f alsa -ac 2 -i hw:0
以下是如何在新版本的Ubuntu上重现
在新的ubuntu docker镜像中启动会话.
docker pull ubuntu
docker run -it --rm ubuntu
Run Code Online (Sandbox Code Playgroud)
安装alsa(高级Linux声音架构)
apt-get update
apt-get install alsa-utils
Run Code Online (Sandbox Code Playgroud)
列出声卡
aplay -l
# aplay: device_list:268: no soundcards found...
Run Code Online (Sandbox Code Playgroud)
播放此声音将失败,因为此图像没有任何声卡
sudo aplay /usr/share/sounds/alsa/Front_Center.wav
Run Code Online (Sandbox Code Playgroud) 我正在使用各种码头集装箱,它们是在Debian sid上建造的.这些图像缺乏/dev/snd和/dev/snd/seq,这非常有道理的,因为他们没有硬件音频卡.
我用来生成MIDI文件的几个软件需要这些音序器设备.它们不一定用于发送音频,但如果声音设备不存在,代码本身将在init中死亡.为了清楚起见,我不需要在docker中生成音频信号,而是我只需要存在这些信号以使其他软件满意.
到目前为止,我已经试过被无休止地安装各种ALSA包(alsa-utils,alsa-oss,等),并试图以modprobe我的出路,这一切没有运气.
在docker容器中,即使是虚拟的,有什么需要有效的音频设备呢?
从 Fedora 34 开始,pulseaudio 被 Pipewire 取代。我使用脉冲音频插座从容器中获取声音,这是最安全的方法。所以,我现在想设置管道来处理容器中的音频,但我找不到方法......
我现在正在尝试最简单的方法,共享 snd 设备,无需套接字:
启动 fedora 34 容器:
podman run -it --device /dev/snd fedora
Run Code Online (Sandbox Code Playgroud)
创建用户并将其添加到音频组:
useradd usertest -u 1000 -m -p ''
usermod -aG audio usertest
Run Code Online (Sandbox Code Playgroud)
安装页面:
dnf -y install pipewire alsa-utils pulseaudio-utils
systemctl start --user pipewire-pulse.service
Run Code Online (Sandbox Code Playgroud)
当我启动它时,出现 DBUS 错误,因为 DBUS 没有在容器上运行
对于用户,pactl info返回此错误:
连接失败:连接被拒绝
pa_context_connect() 失败:连接被拒绝
或者是否有可能获得类似于带有管道线的脉冲音频插座的东西?