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

M1 Mac Docker中amd64 Ubuntu容器Selenium无头Chrome启动报错咨询

根因说明

你遇到的问题属于Docker for Mac在M1系列芯片设备上的已知兼容问题:M1芯片为arm64架构,运行amd64架构的容器时依赖qemu动态二进制转译实现兼容,Chrome这类存在大量系统调用、图形渲染相关逻辑的应用,在qemu转译环境下适配度极低,会直接出现段错误、进程崩溃、信号捕获失败等问题,和你配置的启动参数、Chrome与chromedriver的版本匹配度无关。

可行解决方案

方案1:使用arm64原生镜像+Chromium替换Chrome(推荐)

arm架构Ubuntu官方源已经提供原生arm64版本的chromium和chromium-driver软件包,不需要转译即可运行,兼容性和性能最优,Dockerfile配置参考如下:

FROM arm64v8/ubuntu:20.04
# 禁用交互式配置
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
    chromium-browser \
    chromium-driver \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
# 安装对应版本Selenium
RUN pip3 install selenium==4.0.0

Chrome启动参数保留你已配置的--no-sandbox、--disable-dev-shm-usage、--disable-gpu,额外添加--headless=new启用新版无头模式,稳定性更高。

方案2:直接使用Selenium官方多架构镜像

如果不想自行维护Chrome和chromedriver的安装配置,可以直接使用Selenium官方提供的多架构适配镜像selenium/standalone-chrome,该镜像同时兼容arm64和amd64架构,在M1设备上会自动拉取原生arm版本,docker-compose配置参考如下:

version: '3.8'
services:
  selenium-chrome:
    image: selenium/standalone-chrome:95.0
    shm_size: 2g
    ports:
      - "4444:4444"
  your-celery-worker:
    # 此处替换为你原有celery worker的配置
    build: .
    depends_on:
      - selenium-chrome

业务代码中直接连接http://selenium-chrome:4444的远程Selenium服务调用Chrome即可。

方案3:保留amd64镜像的兼容方案

如果业务必须使用amd64架构的容器,可打开Docker for Mac设置页的「Features in Development」选项卡,勾选「Use Rosetta for x86/64 emulation on Apple Silicon」,使用Rosetta2替代qemu做转译,兼容性远高于qemu,可解决Chrome崩溃问题,性能略低于原生arm镜像。

内容的提问来源于stack exchange,提问作者Jiho Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:54:08