gpt4 book ai didi

linux - 两个容器可以在同一主机的同一显示器上启动 Xserver 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:40 27 4
gpt4 key购买 nike

我创建了一个 Dockerfile,用于安装 Xvfb 和 firefox 以及所需的所有依赖项,并且我能够使用在 Xserver 的 DISPLAY=:1 上启动的 firefox 创建一个容器。

当我尝试启动另一个容器时,第二个容器无法在 DISPLAY=:1 上启动 Xserver。

sudo docker logs docker_serv2
xvfb-run: error: Xvfb failed to start
No protocol specified

因此,我使用 ps aux 检查了我的进程,我惊讶地发现我的 X 服务器列在我的主机上。

xxx 11343  1.9  0.6 240260 47620 ?        Sl   08:41   0:12 Xvfb :1 -screen 0 1280x720x24 -shmem -listen tcp -nolisten tcp -auth /home/xxx/.Xauthority
xxx 11350 18.7 4.2 2238084 326600 ? Sl 08:41 2:07 /usr/lib/firefox/firefox

我使用此命令创建 Xserver 并在两个容器上启动 Firefox:

xvfb-run -n 1 -f ~/.Xauthority --server-args='-screen 0 1280x720x24 -shmem -listen tcp' firefox

我知道可以在主机上看到 docker 进程,因为它不是虚拟机,但我不明白为什么第二个容器也无法在 DISPLAY=:1 上启动 X 服务器,因为这两个容器没有链接。

它们不是与主机系统隔离吗?我以为他们会使用自己的简约环境。

这是我的 run.sh 命令:

docker run -d --rm \
--net=host \
-v /dev/uinput:/dev/uinput \
-v /dev/input:/dev/input \
-v /run/udev:/run/udev \
--name docker firefox

首先,我认为 --net=host 可能是我的问题的根源,但它只会影响网络配置,而且我在没有该选项的情况下也遇到了同样的问题。

其他 -v 选项在这里,因为我也在使用一些/dev/input 指令,并且在这个问题中并不重要。

那么,是否可以启动两个不同的容器,在 DISPLAY=:1 上启动两个单独的 X 服务器?

最佳答案

实际上问题来自于 --net=host 选项。

我从两个运行命令中删除了它,我可以在 display1 上启动两个带有 X 服务器的容器。

所以 --net=host 并不像我想象的那么孤立,它的作用不仅仅是匹配容器网络主机。

关于linux - 两个容器可以在同一主机的同一显示器上启动 Xserver 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55759359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com