我正在尝试设置 puppeteer 以在基于 node:alpine 映像的 docker 容器中工作。我无法以特权用户身份运行该映像,因为我正在使用 AWS Fargate(它不允许此选项)。
因此我需要启用用户命名空间克隆,如下所述:https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md#setting-up-chrome-linux-sandbox
我尝试将这一行添加到我的 Dockerfile 中:
RUN sysctl -w kernel.unprivileged_userns_clone=1
我在构建docker镜像时出现此错误:
sysctl: error: 'kernel.unprivileged_userns_clone' is an unknown key
是否有一种特殊的方法可以在 Alpine Linux 中启用命名空间克隆,这与普通的 Linux 发行版不同?
答案1
添加--cap-add=SYS_ADMIN
到您的docker run ...
命令
编辑:正如评论中指出的,AWS Fargate 目前不支持--cap-add
。
据我所知,Alpine 的内核不支持unprivileged_userns_clone
。您可以运行脚本在此回复在针对 puppeteer 的问题去测试。
我从来没有明白为什么设置 setuid 沙箱说明在 Alpine 上不起作用。在我的例子中,我从 Alpine repo 安装了 chromium,而不是使用 puppeteer 附带的捆绑版本。
解决方案来自关于 puppeteer 的这个问题。