abundant-magician-17307
12/22/2025, 1:11 AMtall-airline-16756
12/22/2025, 1:11 AMtall-airline-16756
12/22/2025, 1:11 AMconfig.yaml 中 enable_chrome_sandbox 的值(true/false)
• 启动时或容器日志中与 Chrome 相关的错误片段(`docker logs <id>` 的输出),特别包含 “chrome failed to start”、“No usable sandbox”、“Failed to move to new namespace” 等关键词
在等你日志和信息的同时,你可以先尝试这几个快速排查步骤:
1. 若用 Docker,启动时加上 `--cap-add SYS_ADMIN`,验证是否能启动 Chrome。
2. 临时将 enable_chrome_sandbox: false 以排除沙盒权限问题(仅作验证)。
3. 若要保留沙盒,使用官方的 seccomp 配置并以 --security-opt seccomp=/path/to/chrome-sandboxing-seccomp-profile.json 挂载运行。
4. 检查并安装 Chrome headless 的依赖库(如 `libnss3`、`libxss1`、字体包等),并确认系统上已安装 chromium/google-chrome。
把以上信息和日志发过来后,我会基于你提供的内容给出具体命令和下一步修复建议。
Sources: Self-hosting the Egress Service | LiveKit docsabundant-magician-17307
12/22/2025, 1:15 AMtall-airline-16756
12/22/2025, 1:15 AMdocker inspect --format '{{.Os}}/{{.Architecture}}' <container_id或镜像名>
◦ 或 docker image inspect <镜像名> 查看支持的架构。
2) 检查 Chrome/Chromium 可执行文件与依赖库
• 在宿主机或容器中尝试直接运行 headless chromium,查看更详细错误:
◦ 进入容器:`docker exec -it <container_id> /bin/bash`(或 sh)
◦ 运行 `/usr/bin/chromium --headless --no-sandbox --disable-gpu about:blank`(路径根据镜像调整)
• 若报缺少库,按提示在宿主/容器中安装常见依赖(麒麟可能包名不同):
◦ 常见依赖示例:`libnss3`, libxss1, libasound2, libx11-xcb1, 字体包等。
• 如果 chromium 可执行文件不存在,需在镜像内安装 chromium 或使用包含 chromium 的镜像。
3) 即使未启用沙盒,仍确认容器权限与内核命名空间支持
• 部分 ARM 或麒麟内核对命名空间/CLONE 标志有限制,导致 Chromium 启动失败。建议临时给容器添加额外能力验证:
◦ 启动时加 --cap-add=SYS_ADMIN 再测试一次。
• 若担心权限,可临时在测试环境开此权限以确认问题来源。
4) 查看并粘贴更完整的 Chrome 相关日志
• 请把 docker logs <container_id> 中包含 Chrome 启动失败前后 30-50 行贴过来,重点关键词:`chrome failed to start`、`No usable sandbox`、`Failed to move to new namespace`、`cannot find library` 等。
• 如果在容器内直接跑 chromium,截取 stderr 的完整输出也很有帮助。
5) 若依赖与权限均正常,尝试切换 chromium 启动参数做进一步诊断
• 在容器内手动启动带更多日志的参数,例如:
◦ chromium --headless --disable-gpu --no-sandbox --disable-dev-shm-usage --enable-logging=stderr --v=1 about:blank
• 把输出贴来,我会帮你解析关键错误。
6) 可临时验证的最小排查流程(按顺序)
• 确认镜像支持 arm64。
• 进入容器手动运行 chromium,记录错误。
• 若报依赖缺失,安装相应包并重试。
• 若报命名空间/权限问题,临时用 --cap-add=SYS_ADMIN 启动容器排查。
如果你把以下信息贴过来,我会直接给出更精确的修复命令:
• docker image inspect <镜像名> 的架构输出或你用的镜像标签;
• docker logs <container_id> 中与 Chrome 启动相关的完整错误段落(或容器内直接运行 chromium 的 stderr 输出)。abundant-magician-17307
12/22/2025, 1:28 AMtall-airline-16756
12/22/2025, 1:29 AMchrome / chrome --headless 都报 `Trace/breakpoint trap (core dumped)`。针对这个崩溃情况,请按下面有序检查并把结果回传,我会继续跟进。
1) 确认镜像与二进制的架构匹配
• 请贴你用的镜像名和标签(例如 livekit/egress:1.9.0 或自定义镜像)。
• 在宿主机执行并贴返回结果:
◦ docker image inspect <镜像名:tag> --format '{{.Os}}/{{.Architecture}}'
• 如果镜像不是 `linux/arm64`,需要使用或构建支持 ARM 的镜像。
2) 检查 Chrome 可执行文件的架构与依赖(在容器内执行)
• 在容器内运行:
◦ file $(which chrome || which chromium || which chromium-browser)
◦ ldd $(which chrome || which chromium || which chromium-browser) 2>&1 | sed -n '1,200p'
• 把两条命令输出贴来,确定二进制是否为 arm64 并查看缺失库。
3) 测试运行时开启额外日志与禁用沙盒参数(已尝试过 `--no-sandbox`,但再试更详细日志)
• 在容器内运行(若二进制路径不同请替换):
◦ chromium --headless --disable-gpu --no-sandbox --enable-logging=stderr --v=1 about:blank 2>&1 | sed -n '1,200p'
• 把输出贴出,关注崩溃前的 stderr 信息。
4) 检查 libc / glibc 与内核兼容性
• ARM 平台上若二进制与系统的 libc 不兼容,会直接崩溃。请在容器内运行:
◦ ldd --version 以及 `uname -a`,并把输出贴来。
5) 尝试使用系统包管理器安装 chromium(验证不是镜像内二进制问题)
• 如果容器有包管理器(apt/yum/zypper),可临时安装系统版 chromium 并运行,确认是否仍崩溃:
◦ 例如(Debian/Ubuntu 风格):`apt-get update && apt-get install -y chromium`,然后运行 `chromium --version`、`chromium --headless --no-sandbox about:blank`。
6) 若二进制为 ARM 且依赖齐全但仍崩溃,尝试换用不同的 Chromium/Chrome 版本
• 在 ARM 麒麟上,某些 Chrome 发布版可能与内核或 C 库不兼容。可尝试降级或升级 chromium 包,或使用由发行版打包的 chromium。
7) 最小信息回传(请提供下列内容以便我给出精确命令)
• 你当前使用的镜像全名与标签(例如 livekit/egress:1.9.0 或自建镜像名)
• 上述第2、4步命令的输出:`file ...`、`ldd ...`、`ldd --version`、`uname -a`
• 如果容器内能安装并运行系统 chromium,请把其 --version 输出和运行 headless 的 stderr
按照顺序做完并把输出发过来,我会根据结果给出对应的修复命令或替代方案。abundant-magician-17307
12/22/2025, 1:44 AMabundant-magician-17307
12/22/2025, 1:47 AM