google-chrome Не удалось перейти в новое пространство имен

Я пытаюсь запустить google-chrome --headless внутри контейнера докеров как пользователь без полномочий root для выполнения некоторых тестов. Каждый раз, когда я пытаюсь запустить его, выдает следующую ошибку:

google-chrome --headless

Не удалось перейти в новое пространство имен: пространства имен PID поддерживаются, пространство имен сети поддерживается, но не удалось: errno = Операция не разрешена Не удалось создать минидамп. Недопустимая инструкция

Это док-контейнер, работающий в кластере k8s. Операционная система - Ubuntu 16.04.

Пространства имен включены, пользователь не является root

Я не хочу использовать параметр --no-sandbox, поскольку это проблема безопасности.

Я не могу использовать docker run --security-opt = syscomp: Unlimited, поскольку он развертывается с помощью helm.

Отсутствует ли системное разрешение, которое мне нужно настроить для Chrome в самом контейнере?


person novak100    schedule 28.11.2019    source источник


Ответы (2)


После обширных исследований в Интернете, я думаю, что нашел ответ:

Песочница По соображениям безопасности Google Chrome не может обеспечить изолированную программную среду, когда он работает в среде на основе контейнеров. Чтобы использовать Chrome в среде на основе контейнера, передайте флаг --no-sandbox исполняемому файлу Chrome

Похоже, что для меня нет лучшего решения, чем --no-sandbox, хотя это и не очень безопасно, в Интернете есть люди, утверждающие, что все еще безопасно использовать "--no-sandbox" в качестве его запуска внутри контейнера, который каким-либо образом дополнительно защищен.

person novak100    schedule 03.12.2019
comment
Если вам нужно, я нашел способ, см. Этот stackoverflow.com/questions/62345581/ - person Tx_monster; 15.06.2020

Хотя это не отвечает на ваш вопрос, поскольку вы не можете установить 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

person Johannes Buchholz    schedule 21.10.2020