docker-如何在容器中运行x桌面?


10

我试图将我的Linux机器设置为运行多个来宾OS,其中一个是Windows VM,另一个是Linux容器。这里的目标是防止我弄乱主机系统,同时可以自由操作基本操作系统并使用主机硬件。最终,我希望在容器中运行我的桌面,然后希望运行图形加速的模拟等。由于Docker具有如此好的git内置容器版本,因此使用它似乎是一个好主意。也许libvirt与LXC一样好,但是docker的特权模式使不必为容器配置设备变得更加容易。

我已经做了一些研究,并已经提出了一些答案,但是我很难将所有内容放在一起。

LXC中的背景

从LXC运行X有助于我了解如何使用以下方式配置容器:

lxc.cgroup.devices.allow = c 226:0 rwm

和使用

mknod -m 666 dri/card0 c 226 0

在容器内部以连接到主机设备。

码头工人

cuda中-使用来自docker容器的GPU,我看到我可以使用LXC后端在Docker中使用相同的设置。

在我看来,如果docker容器在特权模式下运行,那么它可以正常访问GPU,而无需进行额外配置。因此,我启动了一个基本系统,安装了图形驱动程序,xorg-server,xorg-xinit和一个窗口管理器进行测试。

第一次尝试

# startx
Cannot run from a console (or some message like that)

好的,我以为我在tty2上。

# tty
/dev/console

那不是我所期望的。

# chvt 2
# tty
/dev/tty2

好吧,看来好像可行。让我们再试# startx一次。它启动了窗口管理器,光标位于中间。无鼠标响应。无键盘响应。让我们尝试使用更改tty Ctrl-Alt+F3。没有反应。好吧,看来我将不得不重新启动。

第二次尝试

# tty
/dev/console
# chvt 2
# tty
/dev/console

什么?我现在不能更改吗?

继续

再次尝试后,我得到了它来更改tty,然后startx再次冻结了计算机。

现在怎么办?

所以,我现在陷入僵局。我真的希望能够使用一个容器(首选Docker,也可以使用带有libvirt的LXC)作为我的日常操作系统,同时保持精简的主机OS。

最好在这里以特权模式使用Docker,还是使用显式LXC后端并尝试上面列出的选项?

我已经在计划使用libvirt(可能在vagrant-libvirt下)来管理Windows vm,所以在这种情况下使用libvirt或vagrant-LXC对我来说会差不多吗?

编辑:阅读LXC与Docker的文章,我感到既然Docker和Docker容器是用于单应用程序环境的,那么最好使用LXC代替Docker作为我的日常操作系统运行。有什么想法吗?

编辑:我发现像docker一样,有一个lxc-device命令,它允许我绕过cgroups和mknod步骤。而在我能够启动x并冻结系统之前,它现在出错了。也许我最终可以弄清楚这一点,因为似乎没人在那里。

更新:我正在使用鼠标。在来宾上,我安装了xf86-input-mouse和xf86-input-keyboard。在主机上,我运行了以下命令:

# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2

作品!


我非常确信LXC是我需要使用的,而不是Docker。不幸的是,要找到有关将特定tty绑定到容器以便可以运行X的最新文档非常困难。我的主机和来宾都使用systemd,而周围的所有文档都与/ etc / inittab相关。有谁知道如何正确使用LXC容器以使它们“拥有”主机上的tty?
Paul

当我给LXC自己的tty并为其分配视频卡时,我尝试startx使用exec twm,但是从我的角度来看,整个过程都冻结了。对键盘或鼠标无响应。
保罗

unix.stackexchange.com/questions/18003/linux-lxc-deploying-images-with-tiniest-possible-x11似乎有相关的答案。我认为我需要转发/ dev / input链。我会尝试的。
Paul


好吧,我以为我整理好了键盘。但是现在它不再起作用。
Paul

Answers:


1

这个问题有我需要的答案。当然,我lxc-device在配置文件中使用的不是cgroup定义。但是,就我而言,只有在其他tty上启动键盘时,才可以在X中使用键盘。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.