我在里面创建了带有X服务器的docker容器。我将它用于一些离屏OpenGL渲染。 这个容器应该可以在任何系统上运行(运行或不运行X服务器),如果它存在,它应该使用硬件GPU(所以我不能使用xvfb)。
当我在没有GUI的类似服务器的系统上使用此容器时,一切都运行良好。但是当我在Ubuntu 14.04 Desktop上运行容器时,每次在容器中启动X服务器时屏幕都会关闭。
我使用--priviliged启动容器,因此/ dev文件夹与容器共享。我认为这涉及到某种冲突。
有没有办法在容器内启动X,例如主机X服务器仍在工作?
更新
我在Xorg.0.log中看到以下内容:
AIGLX: Suspending AIGLX clients for VT switch
(II) NOUVEAU(0): NVLeaveVT is called.
更新
我可以使用xvfb代替真正的Xorg服务器吗?它是否支持实际的硬件GPU渲染?
答案 0 :(得分:2)
我认为这不会起作用 - 你有效地尝试使用两台X服务器 - 主机和容器 - 我怀疑他们都希望独家使用视频卡。
您可以做的是通过绑定安装X Server套接字从容器中使用主机上的X服务器。这个SO答案解释了如何:https://stackoverflow.com/a/25334301/4332
我不确定这会对您的特定情况有所帮助,但我不完全理解为什么您需要在容器中运行XServer。我认为您仍然可以使用--privileged访问GPU。
答案 1 :(得分:0)
如果您不介意使用CPU进行OpenGL,可以使用带有GLX扩展名的Xdummy视频驱动程序在容器内设置X服务器。但当然你不会看到一件事,因为视频驱动器是假的。
如果您想玩GUI,请尝试TurboVNC + VirtualGL并使用Xdummy服务器作为3D X服务器。