Ubuntu 21.04环境下Docker运行Telegram容器启动失败如何解决?
Docker运行Telegram桌面端报错解决方案
前置操作
运行容器前先执行以下命令,允许本地Docker进程访问X11显示服务:
xhost +local:root
调整启动参数
原命令缺少环境变量传递、显卡设备挂载和权限配置,调整后的完整启动命令如下:
docker run --rm -it --name telegram \ --hostname=$(hostname) \ --cap-add=SYS_NICE \ --device /dev/dri \ -e DISPLAY=unix$DISPLAY \ -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \ -e PULSE_SERVER=unix:$XDG_RUNTIME_DIR/pulse/native \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v "/home/$(whoami)/.Xauthority:/home/user/.Xauthority" \ -v $XDG_RUNTIME_DIR/pulse:$XDG_RUNTIME_DIR/pulse \ -v /etc/localtime:/etc/localtime:ro \ -v /home/legion/Documents/docker/:/home/user/.local/share/TelegramDesktop/ \ # 若驱动仍加载失败可取消注释下一行,适配Intel核显驱动 # -v /usr/lib/x86_64-linux-gnu/dri:/usr/lib/x86_64-linux-gnu/dri:ro \ xorilog/telegram
参数调整说明
- 新增
--cap-add=SYS_NICE:赋予容器调整线程优先级的权限,解决音频线程设置实时优先级报错的问题 - 新增
--device /dev/dri:将宿主机Intel核显设备挂载到容器,解决MESA驱动无法加载、OpenGL版本不识别的问题 - 新增
-e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR:将宿主机的XDG_RUNTIME_DIR环境变量传递到容器,解决开头的路径未配置警告 - 可选挂载驱动目录:如果调整后仍出现驱动加载失败,可取消注释最后一行挂载项,直接复用宿主机的核显驱动文件,适配Ubuntu 21.04的驱动版本
收尾操作
容器退出后可以执行以下命令恢复X11访问权限限制:
xhost -local:root
内容的提问来源于stack exchange,提问作者rowconspire
相关产品推荐
相关产品推荐

