8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Ubuntu 上的 Docker 化 Chromium

seans 2月前

124 0

我希望在 Dockerised Ubuntu 22 中运行不使用 Snap Manger 的 Chromium。Docker 20.10.25Chromium 128.0.6551.0 运行此命令时:chrome --headless=new --dump-dom --ignore-ssl-errors --no-

我希望在 Dockerised Ubuntu 22 中运行不带 Snap Manger 的 Chromium。

  • Docker 20.10.25
  • 铬 128.0.6551.0

运行此命令时:

chrome --headless=new --dump-dom --ignore-ssl-errors --no-sandbox https://domains.google.com/checkip

它响应了一个错误,太长,无法在这里发布,其要点如下:

[8:24:0621/192304.523348:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory

[8:24:0621/192304.544534:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")

DevTools listening on ws://127.0.0.1:9222/devtools/browser/fcf3d3a5-9cea-4fa9-85f9-cf18b2a8323c


[8:34:0621/192304.915840:ERROR:cert_verify_proc_builtin.cc(1063)] CertVerifyProcBuiltin for www.google.com failed:

Docker 配置是

FROM ubuntu:22.04

EXPOSE 9222

ENV CHROMIUM_DOWNLOAD_HOST=https://storage.googleapis.com
ENV LASTCHANGE_URL="https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2FLAST_CHANGE?alt=media"
ENV VERSION='eval curl $LASTCHANGE_URL'
ARG USERNAME=chromium
ARG USER_UID=1000
ARG USER_GID=$USER_UID
ENV HOME=/data

RUN apt-get update && DEBIAN_FRONTEND="noninteractive" apt-get -y install apt-transport-https \
    ca-certificates curl fonts-liberation gconf-service gnupg \
    inotify-tools jq libappindicator1 libappindicator3-1 libasound2 libatk1.0-0 \
    libatk-bridge2.0-0 libatspi2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
    libexpat1 libfontconfig1 libgbm1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 \
    libglib2.0-0 libgtk-3-0 libjq1 libnspr4 libnss3 libonig5 libnss3-tools \
    libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 \
    libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxkbcommon0 \
    libxrandr2 libxrender1 libxss1 libxtst6 lsb-release unzip xdg-utils xvfb strace vim \
    && rm -rf /var/lib/apt/lists/* /var/cache/apt/*

RUN curl -o chrome-linux.zip "$CHROMIUM_DOWNLOAD_HOST/chromium-browser-snapshots/Linux_x64/$($VERSION)/chrome-linux.zip" \
    && unzip chrome-linux.zip -d /usr/local/bin \
    && rm chrome-linux.zip

RUN groupadd --gid $USER_GID $USERNAME \
    && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME

RUN chown -R $USERNAME:root /usr/local/bin/chrome-linux
RUN ln -s /usr/local/bin/chrome-linux/chrome /usr/local/bin/chrome
RUN chrome --version

RUN mkdir $HOME || true
VOLUME $HOME
COPY --chmod=770 entrypoint.sh $HOME
RUN chown -R $USERNAME:root $HOME

RUN echo "export XDG_CACHE_HOME=$(mktemp -d)" >> /etc/bash.bashrc
RUN chown -R $USERNAME:root $(cat /etc/bash.bashrc |grep XDG_CACHE_HOME | cut -d "=" -f2 )
RUN chmod -R 770 $(cat /etc/bash.bashrc |grep XDG_CACHE_HOME | cut -d "=" -f2 )

## Default user
USER $USERNAME
ENV HOME=/data
ENV DEBUG_ADDRESS=0.0.0.0
ENV DEBUG_PORT=9222

WORKDIR $HOME
ENTRYPOINT ["./entrypoint.sh"]

以及 entrypoint.sh

#!/bin/sh
set -e

exec sh -c "chrome --headless=new --dump-dom --ignore-ssl-errors --no-sandbox https://domains.google.com/checkip"
帖子版权声明 1、本帖标题:Ubuntu 上的 Docker 化 Chromium
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由seans在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 在同一个系统上很有可能存在多个版本的 glibc(我们每天都这样做)。

    但是,您需要知道 glibc 由许多部分组成(200 多个共享库),所有部分都必须匹配。其中一个部分是 ld-linux.so.2,它 必须与 libc.so.6 匹配,否则您将看到所看到的错误。

    ld-linux.so.2 的绝对路径在链接时被硬编码到可执行文件中,并且在链接完成后不能轻易更改(更新:可以使用 patchelf ;请参阅 答案 )。

    要构建可与新 glibc 一起使用的可执行文件,请执行以下操作:

    g++ main.o -o myapp ... \
       -Wl,--rpath=/path/to/newglibc \
       -Wl,--dynamic-linker=/path/to/newglibc/ld-linux.so.2
    

    链接 -rpath 器选项将使运行时加载器搜索库 /path/to/newglibc (因此您不必 LD_LIBRARY_PATH 在运行它之前进行设置),并且该 -dynamic-linker 选项将“烘焙”路径以更正 ld-linux.so.2 到应用程序中。

    如果您无法重新链接 myapp 应用程序(例如,因为它是第三方二进制文件),则不会丢失所有内容,但会变得更加棘手。一种解决方案是 chroot 为其设置适当的环境。另一种可能性是使用 rtldi 二进制编辑器 .

    更新: 或者您可以在现有二进制文件上使用 patchelf 将它们重定向到备用 libc。

返回
作者最近主题: