gpt4 book ai didi

google-chrome - Docker和沙盒中的Chrome/Chromium

转载 作者:行者123 更新时间:2023-12-05 01:13:10 31 4
gpt4 key购买 nike

我想运行一个容器化的Chromium,但遇到了沙箱问题。我正在运行Chromium的“原始版本”(不是通过软件包管理器下载的,但是那应该没有什么不同,fwiw)。这是一个最小的Dockerfile,它将说明我的问题:

FROM ubuntu:16.04

RUN set -ex; \
apt-get update; \
apt-get install curl unzip gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget -y;

RUN set -ex; \
# download and install Chromium build, set permissions
curl -o /tmp/chromium-download.zip https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/561732/chrome-linux.zip; \
unzip -d /opt /tmp/chromium-download.zip; \
chmod -R go=u-w /opt/chrome-linux; \
# create 'chrome' group and user
groupadd --system chrome; \
useradd --system --create-home --gid chrome --groups audio,video chrome; \
# Advice re. SUID sandbox in 'Installation instructions for “Raw builds of Chromium”':
# https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md#installation-instructions-for-raw-builds-of-chromium
chown root:root /opt/chrome-linux/chrome_sandbox; \
chmod 4755 /opt/chrome-linux/chrome_sandbox;

ENV CHROME_DEVEL_SANDBOX="/opt/chrome-linux/chrome_sandbox"
USER chrome
ENV PATH="${PATH}:/opt/chrome-linux"

生成并尝试运行它:
$ docker build . -t chromium
$ docker run -it chromium:latest chrome --headless

而且我收到以下错误:
[0830/122656.151751:FATAL:zygote_host_impl_linux.cc(127)] No usable sandbox! Update your kernel or see https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the SUID sandbox. If you want to live dangerously and need an immediate workaround, you can try using --no-sandbox.

最常见的故障排除原则(例如 here;不同的项目,但问题相同):“只需添加 --no-sandbox,您就可以开始了”。这确实有效。

但是,官方消息来源不建议这样做,并声称“如果您在容器中正确设置了用户,则不需要。” (请参阅 here)。从我的感觉来看,容器内的用户是正确创建的,并且我还遵循了有关设置SUID沙箱权限的建议(我不清楚其实际角色, this页说:“Linux SUID沙箱几乎但不是完全删除。”-在实践中意味着什么)。

有机会在不禁用沙箱的情况下运行它吗? (因为这是用于测试的,所以我希望保持沙盒的行为,因为我想尽可能地模拟“自然”环境)

最佳答案

在内核中启用用户 namespace 。 >> another relevant thread <<

关于google-chrome - Docker和沙盒中的Chrome/Chromium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097275/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com