在Linux上的Docker上运行OpenGL应用程序失败 – 为什么?

我可以在Docker容器中成功运行GUI应用程序,但是我无法在其中运行OpenGL应用程序。 它在shell上的输出如下所示:

./wolf3d map2 libGL error: unable to load driver: i965_dri.so libGL error: driver pointer missing libGL error: failed to load driver: i965 libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 152 (GLX) Minor opcode of failed request: 3 (X_GLXCreateContext) Value in failed request: 0x0 Serial number of failed request: 41 Current serial number in output stream: 42 

我该如何解决上述问题?

我的基本操作系统是Ubuntu,我的Docker容器是Fedora。

很难说究竟是什么问题,但通常归结为容器内可见的OpenGL实现与主机系统的OpenGL实现不匹配。 一个疯狂的不匹配将是主机运行NVidia,但只有在docker安装Mesa。 但一个简单的版本不匹配可以有相同的效果。 从技术上讲,你必须将libGL和朋友从主机传入容器。 目前没有“单个文件覆盖”,所以你最好的办法就是在容器启动时简单地复制相关的库。

或者可以简单地说,容器内部没有安装完全成熟的OpenGL实现。