Ubuntu 当我在docker容器中启动X服务器时,主机屏幕关闭

Ubuntu 当我在docker容器中启动X服务器时,主机屏幕关闭,ubuntu,docker,xserver,Ubuntu,Docker,Xserver,我用X服务器创建了docker容器。我使用它进行一些非屏幕OpenGL渲染。 这个容器应该可以在任何系统上工作(无论是否运行X服务器),如果它存在,它应该使用硬件GPU(所以我不能使用xvfb) 当我在没有GUI的类似服务器的系统上使用这个容器时,一切都可以完美地工作。但是当我在Ubuntu14.04桌面上运行容器时,每当我在容器中启动X服务器时,屏幕就会关闭 我用--priviliged启动容器,因此/dev文件夹与容器共享。我认为这涉及到某种冲突 是否有办法在容器内启动X,例如主机X服务器仍

我用X服务器创建了docker容器。我使用它进行一些非屏幕OpenGL渲染。 这个容器应该可以在任何系统上工作(无论是否运行X服务器),如果它存在,它应该使用硬件GPU(所以我不能使用xvfb)

当我在没有GUI的类似服务器的系统上使用这个容器时,一切都可以完美地工作。但是当我在Ubuntu14.04桌面上运行容器时,每当我在容器中启动X服务器时,屏幕就会关闭

我用--priviliged启动容器,因此/dev文件夹与容器共享。我认为这涉及到某种冲突

是否有办法在容器内启动X,例如主机X服务器仍在工作

更新:

我在Xorg.0.log中看到了以下内容:

AIGLX: Suspending AIGLX clients for VT switch
(II) NOUVEAU(0): NVLeaveVT is called.
更新:


我可以用xvfb代替真正的Xorg服务器吗?它支持实际的硬件GPU渲染吗?

我认为这行不通-您实际上是在尝试使用两个X服务器-主机和容器-我怀疑他们都希望独占使用视频卡

相反,您可以通过绑定挂载X服务器套接字,从容器中使用主机上的X服务器。这个答案解释了:


我不确定这对您的特定情况是否有帮助,但我不完全理解为什么您需要在容器中运行XServer。我认为您应该仍然可以使用--privileged访问GPU。

如果您不介意使用CPU for OpenGL,您可以在容器中设置一个带有GLX扩展的Xdummy视频驱动程序的X服务器。但是你当然看不到任何东西,因为视频驱动程序是,嗯,傻瓜


如果您确实想使用GUI,请尝试TurboVNC+VirtualGL,并使用Xdummy服务器作为3D X服务器。

使用主机X服务器并不方便,因为它可能不存在。理想情况下,我想要一个在台式机和服务器上都能工作的解决方案。我需要X服务器,因为我需要OpenGL上下文初始化中的“显示”:display*display=XOpenDisplay(displayName);抱歉,我不知道。听起来好像它试图抓取GPU硬件,并被允许。这不会有好的结局。