【问题标题】:Host screen turns off when I start X server in docker container当我在 docker 容器中启动 X 服务器时,主机屏幕关闭
【发布时间】:2014-11-28 18:43:22
【问题描述】:

我创建了带有 X 服务器的 docker 容器。我将它用于一些屏幕外的 OpenGL 渲染。 这个容器应该可以在任何系统上工作(有或没有运行 X 服务器),如果存在,它应该使用硬件 GPU(所以我不能使用 xvfb)。

当我在没有 GUI 的类似服务器的系统上使用这个容器时,一切正常。但是当我在 Ubuntu 14.04 Desktop 上运行容器时,每次在容器中启动 X 服务器时屏幕都会关闭。

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

有没有办法在容器内启动X,比如host X server is still working?

更新:

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

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

更新:

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

【问题讨论】:

  • 听起来它试图抢夺 GPU 硬件并且被允许。这不会有好的结局。

标签: ubuntu docker xserver


【解决方案1】:

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

您可以做的是通过绑定安装 X 服务器套接字来从容器中使用主机上的 X 服务器。这个 SO 答案解释了如何:https://stackoverflow.com/a/25334301/4332

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

【讨论】:

  • 使用host X server不方便,因为它可能不存在。理想情况下,我想要一个适用于台式机和服务器机器的解决方案。我需要 X 服务器,因为我需要在 OpenGL 上下文初始化中“显示”: Display* display = XOpenDisplay( displayName );
  • 对不起,我不知道。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2011-07-30
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多