Docker NVIDIA EGL桌面简介
Docker NVIDIA EGL桌面是一个为Kubernetes设计的KDE Plasma桌面容器,旨在提供开源的远程云/HPC图形或游戏流媒体平台。它具有以下主要特点:
- 支持通过WebRTC和HTML5为NVIDIA GPU提供OpenGL EGL和GLX、Vulkan以及Wine/Proton功能
- 直接访问GPU,无需X.Org X11服务器,使用EGL和VirtualGL以及Vulkan
- 不需要
/tmp/.X11-unix
主机套接字或主机配置 - 提供两种Web界面选项:
- 默认的Selkies-GStreamer WebRTC HTML5界面
- 备用的KasmVNC WebSocket HTML5界面
这个容器完全由与供应商无关的应用程序和协议组成,除了NVIDIA用户空间驱动程序组件。这意味着它也可以与AMD和Intel等其他供应商的GPU一起使用,只需使用相应供应商的容器工具包/运行时或Kubernetes设备插件即可。
使用要求
使用Docker NVIDIA EGL桌面需要满足以下要求:
- 主机NVIDIA GPU驱动程序版本至少为450.80.02,最好是470.42.01
- 需要在主机上配置NVIDIA Container Toolkit以分配GPU
- 建议使用最新的次要版本(
000.xx.00
中的xx
) - 所有Maxwell或更高代的消费级、专业级或数据中心级GPU都应该可以运行此容器
- Kepler GPU未经测试,可能无法支持NVENC后端,但可以使用后备软件加速功能
部署方法
Docker NVIDIA EGL桌面支持以下几种部署方式:
使用Docker运行
- 使用Docker、Podman或其他支持NVIDIA的容器运行时运行容器:
docker run --name egl -it -d --gpus 1 --tmpfs /dev/shm:rw -e TZ=UTC -e DISPLAY_SIZEW=1920 -e DISPLAY_SIZEH=1080 -e DISPLAY_REFRESH=60 -e DISPLAY_DPI=96 -e DISPLAY_CDEPTH=24 -e PASSWD=mypasswd -e SELKIES_ENCODER=nvh264enc -e SELKIES_VIDEO_BITRATE=8000 -e SELKIES_FRAMERATE=60 -e SELKIES_AUDIO_BITRATE=128000 -e SELKIES_BASIC_AUTH_PASSWORD=mypasswd -p 8080:8080 ghcr.io/selkies-project/nvidia-egl-desktop:latest
- 或者使用Docker Compose:
# docker-compose.yml
version: '3'
services:
egl:
image: ghcr.io/selkies-project/nvidia-egl-desktop:latest
...
# 启动容器
docker compose up -d
# 停止容器
docker compose down
- 使用浏览器连接到8080端口的Web服务器。
使用Kubernetes运行
- 创建Kubernetes Secret来存储身份验证密码:
kubectl create secret generic my-pass --from-literal=my-pass=YOUR_PASSWORD
- 编辑
egl.yml
文件并创建Pod:
kubectl create -f egl.yml
- 连接到端口8080上的Web服务器。
WebRTC和防火墙问题
对于Selkies-GStreamer WebRTC HTML5界面,可能需要额外的网络配置:
- 使用内部TURN服务器
- 使用主机网络
- 使用外部TURN服务器
详细配置说明请参考项目文档。
故障排除
如果遇到问题,可以检查以下几点:
- 确保正确配置了NVIDIA Container Toolkit
- 检查主机NVIDIA GPU驱动程序是否为
nvidia-headless
变体 - 检查
NVIDIA_DRIVER_CAPABILITIES
环境变量设置 - 确保
/dev/shm
有足够的容量
更多故障排除指南请参考项目文档。
Docker NVIDIA EGL桌面为远程图形和游戏流媒体应用提供了一个强大而灵活的解决方案。通过合理配置和使用,它可以在各种云和HPC环境中实现高性能的远程桌面体验。