You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04 Docker容器启用privileged后无法运行gazebo9问题求助

解决方案

问题根本原因是宿主机搭载NVIDIA+AMD双显卡,使用--privileged参数启动容器时,容器默认会挂载所有宿主机硬件设备,包括AMD显卡。你使用的Ubuntu 18.04基础镜像自带的Mesa驱动版本过旧,和宿主机的新版AMD显卡驱动不兼容,gazebo默认优先调用AMD显卡驱动时触发了资源分配错误。
不加--privileged时仅挂载了NVIDIA显卡设备,gazebo直接使用NVIDIA驱动运行因此正常;Ubuntu Foxy(基于20.04)自带的Mesa版本足够新,兼容宿主机AMD驱动,因此也没有报错。
可以通过以下任意一种方案修复:

方案1:强制gazebo使用NVIDIA显卡(推荐,无需修改镜像)

启动容器时额外添加两个环境变量,指定GLX优先使用NVIDIA驱动,不会尝试加载AMD驱动:

docker run -it --rm --privileged --gpus all \
-e DISPLAY=$DISPLAY \
-e XAUTHORITY=~/.Xauthority \
-e __GLX_VENDOR_LIBRARY_NAME=nvidia \
-e LD_LIBRARY_PATH=/usr/lib/nvidia:/usr/lib/x86_64-linux-gnu/nvidia:$LD_LIBRARY_PATH \
--network host \
--volume /tmp/.X11-unix/:/tmp/.X11-unix \
--volume $XAUTHORITY:/root/.Xauthority \
gazebo:libgazebo9-bionic gazebo

方案2:升级容器内Mesa驱动版本

如果需要同时使用AMD显卡,你可以在制作自定义镜像时升级Ubuntu 18.04的Mesa版本到21.0+,匹配宿主机驱动:
在Dockerfile中添加以下内容:

RUN add-apt-repository ppa:kisak/kisak-mesa -y && \
apt update && \
apt upgrade -y && \
rm -rf /var/lib/apt/lists/*

重新构建镜像后即可正常带--privileged参数启动。

方案3:容器内屏蔽AMD驱动

如果不需要在容器内使用AMD显卡,可以在启动容器时挂载驱动黑名单配置,屏蔽amdgpu和radeon模块加载:

  1. 宿主机新建blacklist-amd.conf文件,内容如下:
blacklist amdgpu
blacklist radeon
  1. 启动命令添加挂载参数:
--volume /path/to/blacklist-amd.conf:/etc/modprobe.d/blacklist-amd.conf

内容的提问来源于stack exchange,提问作者Aether Watts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:48:04