在我的系统上安装了各种软件包和程序(如vtk,tvtk,ParaView,mayavi等)之后,我最终得到了完全损坏的全局软件包。例如:目前,我无法运行mayavi超过几秒钟,因为它崩溃时没有任何消息。问题在于每个库都需要不同版本的依赖项(特别是Qt4与Qt5),您有时需要手动构建软件以允许某些非标准功能(具有Python支持的ParaView)等等。结果是一团糟。

因此,我决定在Docker中构建ParaView来隔离软件。我绝对需要ParaView的Python脚本功能,这不是Ubuntu存储库软件包的默认选择。 Here是我工作的结果。我受到this repository的启发,但是存在某些缺点,尤其是没有Python和MPI支持,它是ParaView官方仓库的一个分支。

因此,我使用它并创建了一个新的存储库。它是一个包含所有必需软件包的Ubuntu镜像,ParaView是通过MPI和Python支持构建的。请参阅README如何构建它以及如何运行它。如果有人感兴趣,我可以将图像推送到dockerhub。请注意,主机上的用户必须具有uid 1000,否则X服务器隧道将无法正常工作。但是,这很容易解决。

因此,问题随之而来。当我运行ParaView时,我看到以下错误消息:

libGL error: failed to open drm device: No such file or directory
libGL error: failed to load driver: i965

显然,没有OpenGL加速。有谁知道如何在Docker中启用OpenGL支持?我知道this信息库,但是我不喜欢通过vnc解决方案。还有其他方法可以做到吗?我对OpenGL不熟悉,因此非常感谢您的帮助。

最佳答案

您可以尝试以下步骤:

  • 在图像中安装mesa-utils
  • 将您的容器用户添加到视频群组。

  • 然后,您应该能够使用软件渲染的OpenGL。

    从主机共享X unix套接字可能有一些警告。您可以使用mviereck/x11docker在第二台X服务器上运行镜像。软件渲染的OpenGL可以正常工作。硬件渲染是实验性的,并且正在开发中。

    在您的github回购示例中,您使用主机显示:0:共享$DISPLAY和Unix套接字:
    docker run -ti -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix paraview
    

    如果您与容器共享dev/dri中的所有文件(尤其是/dev/dri/card0),则很可能会获得硬件加速。如果遇到渲染故障,可以使用docker run选项--ipc=host。根据X的设置,也需要共享~/.Xauthority$XAUTHORITY,或者如果容器用户是root用户,则在主机上设置xhost +SI:localuser:root

    注意:此设置会破坏容器隔离! (为获得更好的隔离性,请查看x11docker。)

    关于opengl - 带有OpenGL支持的Docker中的ParaView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39529467/

    10-12 00:38