尝试在 Docker 中运行 Puppeteer,一个控制无头 Chromium 的 Node 库(以便执行诸如创建网站的 PDF 之类的事情)是一件令人惊讶的繁琐事情。
问题是,据我了解,要以 root 身份运行,您需要 option --no-sandbox,这被正确地谴责为不安全和糟糕的解决方案。问题是首选替代品似乎同样糟糕:
用 运行容器
CAP_ADD=SYS_ADMIN,我想我不需要进一步评论,或者以非 root 身份运行,但要在非 root 沙箱中运行 Puppeteer,您需要启用 kernel 选项
unprivileged_userns_clone,一旦我开始研究发现据说
“打开 Linux 内核中的严重漏洞”(链接)
也
“非特权用户命名空间非常危险”(链接)
令我惊讶的是,做一些像运行 Web 浏览器这样简单且相对较低级别的事情似乎需要如此广泛的权限,这显然会打开广泛的攻击媒介。如果我要 root 手机或破坏操作系统安全例程,我正在阅读的那种警告是我期望阅读的。
我是不是误解了这里的情况,还是在 Docker 容器中运行 Chromium 等于将我的服务器开放给一半的互联网?