google-chrome无法移动到新命名空间

fcg9iug3  于 2023-06-19  发布在  Go
关注(0)|答案(2)|浏览(118)

我试图以非root用户的身份在docker容器中运行google-chrome --headless来执行一些测试。每次我试图启动它,它抛出以下错误:

谷歌 chrome -无头

  • 无法移动到新命名空间:支持PID命名空间,支持网络命名空间,但失败:errno =不允许操作无法生成小型转储。非法指令 *

它是一个运行在k8s集群中的docker容器。操作系统为Ubuntu 16.04。
已启用命名空间,用户为非root用户
我不想使用--no-sandbox选项,因为这是一个安全问题。
我不能使用docker run --security-opt=syscomp:unconfined,因为它是使用helm部署的。
是否有一个系统权限缺失,我需要在容器本身内为chrome设置?

mwg9r5ms

mwg9r5ms1#

在互联网上广泛研究之后,我想我找到了答案:

    • 沙盒***由于安全原因,Google Chrome在基于容器的环境中运行时无法提供沙盒。要在基于容器的环境中使用Chrome,请将--no-sandbox标志传递给chrome可执行文件 *

所以看起来没有比--no-sandbox更好的解决方案了,尽管它不是很安全,但互联网上有人声称使用“--no-sandbox”仍然是安全的,因为它在容器中运行,无论如何都受到额外的保护。

os8fio9y

os8fio9y2#

虽然这并没有回答你的问题,因为你不能设置security-opt,这仍然是一个很好的解决方案,为其他人有类似的问题找到问题。
下载此chrome.json文件,其中包含自定义安全配置文件。
将安全配置文件与--security-opt seccomp=path/to/chrome.json或docker-compose一起使用:

# docker-compose.yml
version: '3'
services:
  <service name>:
    #
    # the service configuration
    #
    security_opt:
      - seccomp=<path to downloaded chrome.json>

参见https://stackoverflow.com/a/53975412/8678740

更新

现在可以在--cap-add=SYS_ADMINdocker-compose.yml中使用以下命令完成此操作:

# docker-compose.yml
services:
  <service name>:
    #
    # the service configuration
    #
    cap_add:
      - SYS_ADMIN

参见:https://pptr.dev/guides/docker#usage

相关问题