docker - libGL 错误 : failed to load driver swrast in docker container

标签 docker pyqt docker-compose dockerfile nvidia

我有一个 docker 容器,我试图从中运行 pyqt 应用程序。除了一部分 GUI 无法呈现外,一切都运行良好。码头日志抛出这个:

libGL error: failed to load driver: swrast
X Error: GLXBadContext 169
 Extension:    154 (Uknown extension)
 Minor opcode: 6 (Unknown request)
 Resource id:  0x6400003
X Error: BadValue (integer parameter out of range for operation) 2
 Extension:    154 (Uknown extension)
 Minor opcode: 3 (Unknown request)
 Resource id:  0x0
...
QGLContext::makeCurrent(): Failed.

在我的 Dockerfile 中,我尝试安装几乎所有我能找到的可能相关的包,包括 mesa-utils .

就 docker-compose 文件而言,它是这样的:
version: '2'
    services:
    gui:
        build: .
        volumes:
        - .:/usr/src
        - /tmp/.X11-unix:/tmp/.X11-unix
        command: /bin/bash -c "python start.py"
        environment:
        - DISPLAY=unix$DISPLAY
        - QT_X11_NO_MITSHM=1
        devices:
        - "/dev/snd:/dev/snd"
        - "/dev/dri:/dev/dri"
        privileged: true

任何想法我可能会错过什么?

最佳答案

弄清楚了。我必须构建 gui具有硬件加速的 OpenGL 支持。有一个 repo ( https://github.com/gklingler/docker3d ),其中包含具有 nvidia 或其他图形驱动程序支持的 docker 图像。

另一个问题是,除非主机和容器具有 ,否则它对我不起作用。精确 同一个司机。为了解决这个问题,如果您在 linux 上运行,您可以运行以下 shell 脚本:

#!/bin/bash
version="$(glxinfo | grep "OpenGL version string" | rev | cut -d" " -f1 | rev)"
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/"$version"/NVIDIA-Linux-x86_64-"$version".run
mv NVIDIA-Linux-x86_64-"$version".run NVIDIA-DRIVER.run

关于docker - libGL 错误 : failed to load driver swrast in docker container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166269/

相关文章:

docker - 在重新启动 Swarm 之前,NodeJS 不会检测到 Docker Bind Mount 中的更改

linux - AWS ECS 上的 Docker 容器始终显示 STOPPED

python - docker-py:如何检查构建是否成功?

docker-machine 加入 worker 失败

docker - Centos docker 代理端口 - 防火墙

python - 取消 QFileDialog 时如何停止子窗口关闭

撰写入口点中的 Docker 变量扩展

docker - 将Go Server作为Docker容器运行时权限被拒绝错误

python - PyQt4 QStandardItem需要setInputMask

qt - 将 PySide/PyQt 小部件嵌入到 Qt/C++ 应用程序中