在 Alpine Linux 中启用 kernel.unprivileged_userns_clone

在 Alpine Linux 中启用 kernel.unprivileged_userns_clone

我正在尝试设置 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 的这个问题

相关内容