Docker容器中Jupyter Notebook运行Selenium时Chrome/ChromeDriver崩溃
解决方案
1. 强制Chrome与ChromeDriver版本匹配
容器内通过webdriver-manager自动下载的ChromeDriver,可能和已安装的Chrome版本不兼容,导致启动崩溃。建议在Dockerfile中手动安装对应版本的ChromeDriver:
USER root # 安装Chrome后,获取版本并匹配下载ChromeDriver RUN CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+\.\d+') \ && CHROME_MAJOR_VERSION=${CHROME_VERSION%.*.*.*} \ && wget -q https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION} -O /tmp/chromedriver_version \ && CHROMEDRIVER_VERSION=$(cat /tmp/chromedriver_version) \ && wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip \ && unzip chromedriver_linux64.zip -d /usr/local/bin/ \ && chmod +x /usr/local/bin/chromedriver \ && rm chromedriver_linux64.zip /tmp/chromedriver_version
同时修改Python代码,直接使用已安装的ChromeDriver,避免自动下载:
s = Service('/usr/local/bin/chromedriver')
2. 补充容器适配的Chrome启动参数
在ChromeOptions中添加更多适配Docker环境的参数,解决资源限制和权限问题:
options.add_argument('--disable-gpu') options.add_argument('--remote-debugging-port=9222') options.add_argument('--disable-extensions') options.add_argument('--user-data-dir=/tmp/chrome-profile') options.add_argument('--allow-running-insecure-content')
3. 调整容器运行权限
测试阶段可添加--privileged参数提升容器权限(生产环境不推荐),或确保Chrome可访问必要资源:
docker run --rm --name my-jupyter-cbb-selenium \ --privileged \ -p 8888:8888 \ myname/docker-jupyter-cbbselenium-notebook
4. 改用预配置的Selenium镜像
直接基于官方Selenium镜像搭建Jupyter环境,规避手动安装的版本兼容问题:
FROM selenium/standalone-chrome:latest ENV JUPYTER_ENABLE_LAB=yes USER root RUN apt-get update && apt-get install -y python3-pip python3-dev RUN pip install jupyterlab pydrive==1.3.1 google-cloud-bigquery==3.4.0 USER seluser CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]
内容的提问来源于stack exchange,提问作者Canovice
相关产品推荐
相关产品推荐

