Skip to content

[Bug] AEM 11.0 在 WSL2 环境下启动失败:NVIDIA 驱动挂载冲突与本地镜像覆盖问题 #15770

@XUANYUANxiaomu

Description

@XUANYUANxiaomu

问题描述 (Describe the bug)
在 WSL2 环境下使用 aem start 启动 GPU 环境时,WSL2 原生的 nvidia-container-toolkit 会自动将宿主机驱动透传至容器,而官方 11.0 GPU 镜像 (apollo-env-gpu:11.0) 内已残留同名的驱动文件,导致 OCI 挂载冲突报错 (file exists) 且容器启动崩溃。此外,AEM 存在强制拉取云端镜像的逻辑,导致开发者无法通过本地修改镜像的方式来规避此冲突。

复现步骤 (To Reproduce)
复现此行为的步骤:

在 Windows WSL2 (Ubuntu) 系统中配置好底层的 NVIDIA Docker 环境。

在工程目录下执行 aem start。

观察终端报错:因 libnvidia-ml.so.1 或 libcudadebugger.so.1 等文件冲突导致 OCI runtime create failed。

尝试修复:手动启动无 GPU 挂载的临时容器,删除冲突库并 commit 覆盖本地同名镜像。

再次执行 aem start,观察到 AEM 无视本地修改,强制执行 pull 下载较新的官方镜像并覆盖了本地修复。

尝试绕过:若提取 AEM 底层长串 docker run 命令手动指定本地修改后的镜像启动,再执行 aem enter,会报错 unable to find user apollo: no matching entries in passwd file(因绕过了 AEM 的后置初始化脚本)。

预期行为 (Expected behavior)
期望 aem start 能在 WSL2 环境下正常挂载 GPU 驱动并启动环境;或者 AEM 能够提供类似 --local-image 或 --no-pull 的启动参数,允许开发者使用自行清理过残留文件的本地镜像来启动容器。

截图 (Screenshots)
Image

桌面设备 (Desktop):

操作系统 (OS): Windows 11 专业工作站版 运行WSL2 (Ubuntu18.04)

显卡硬件: NVIDIA Quadro RTX 4000

Apollo 版本: 11.0.0 (包管理模式 / aem 工具)

其他补充信息 (Additional context)
强烈建议官方团队考虑在构建 apollo-env-gpu:11.0 基础镜像时,提前清理 /usr/lib/x86_64-linux-gnu/ 下的 libcuda.so*, libnvidia-.so 等残留的 ghost libraries。这能从根本上解决 WSL2 用户的挂载冲突问题,提升包管理模式的兼容性。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions