Hap*_*Cry 7 nvidia pyqt docker dockerfile docker-compose
我有一个 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.
Run Code Online (Sandbox Code Playgroud)
在我的 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
Run Code Online (Sandbox Code Playgroud)
任何想法我可能会错过什么?
弄清楚了。我必须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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9168 次 |
| 最近记录: |