Ответ 1
Просто запустите хром с --no-sandbox
, который разрешает проблему
Моя проблема заключается в том, как запустить google chrome в контейнере докеров для тестирования e2e.
Я создаю Dockerfile
из официального изображения Дженкинса, но когда вы пытаетесь запустить google chrome, он вылетает и показывает ошибку:
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
Trace/breakpoint trap (core dumped)
Изображение докеры Jenkins использует Debian jessie
.
Я могу запустить google chrome с флагом --headless
, а сервер X не нужен.
Это мой файл докеров:
Официальное изображение Дженкинса:Репо человек запускает Google Chrome с графическим интерфейсом от докера:
Мой первый подход заключается в использовании xvbf
, но процесс проще при использовании флага --headless
.
Я могу запустить chrome на сервере Ubuntu с теми же командами для установки, но в докере он не работает.
После других намерений я использовал флаг --no-sandbox
, но изображения докеров показывают следующую ошибку.
[0427/180929.595479:WARNING:audio_manager.cc(295)] Multiple instances of AudioManager detected
[0427/180929.595537:WARNING:audio_manager.cc(254)] Multiple instances of AudioManager detected
libudev: udev_has_devtmpfs: name_to_handle_at on /dev: Operation not permitted
На самом деле я выполнил эту команду:
google-chrome-stable --headless --disable-gpu --no-sandbox http://www.google.com
Просто запустите хром с --no-sandbox
, который разрешает проблему
добавить
- cap-add SYS_ADMIN
для команды запуска docker
Пример:
docker run --rm -p=81:81 -d -v $(pwd)/src:/opt/code --name chrome_test --cap-add=SYS_ADMIN test/chrome_iso
Использование этого изображения alpeware/chrome-headelss-trunk
работало для меня в ubuntu!
Команда, используемая в этом контейнере для запуска безголовочного хрома, такова:
/usr/bin/google-chrome-unstable \
--disable-gpu --headless --no-sandbox \
--remote-debugging-address=0.0.0.0 \
--remote-debugging-port=9222 --user-data-dir=/data
здесь короткое видео контейнера в действии
Я запустил контейнер в Ubuntu с помощью этой команды:
docker run -it --rm -p=0.0.0.0:9222:9222 \
--name=chrome-headless \
-v /tmp/chromedata/:/data alpeware/chrome-headless-trunk
а затем использовать Chrome для подключения к порту отладки в localhost:9222
С некоторыми изменениями вы, вероятно, можете запустить это в Jenkins!
У меня нет ответа, но я знаю контейнер, который успешно запускает безглавой Chrome в Docker. Селен один:
Я использую его для автоматического тестирования моего webapp в Chrome
Надеюсь, что это поможет
Я использую Dockerfile по умолчанию Selenium Chrome Node, следуя
FROM selenium/standalone-chrome-debug:latest
MAINTAINER Serge Arbuzov <[email protected]>
USER root
### jenkins set up ###
RUN apt-get update && apt-get install -y openssh-server sudo
RUN mkdir /var/run/sshd
RUN adduser jenkins
RUN echo jenkins:jenkins | chpasswd
RUN echo "jenkins ALL=(ALL) NOPASSWD:ALL">>/etc/sudoers
USER root
RUN echo export DISPLAY=":1.5" >> /etc/environment
ADD run.sh /run.sh
RUN chmod +x /run.sh
EXPOSE 22
CMD ["/run.sh"]
И мой run.sh
#!/bin/bash
Xvfb :1 -screen 5 1024x768x8 &
/usr/sbin/sshd -D
Поэтому я могу использовать изображение по умолчанию как Jenkins Node
Вы также можете взглянуть на наш "docker-headless-vnc-container" https://github.com/ConSol/docker-headless-vnc-container. Там вы можете запустить настоящий Desktop-UI и браузер. Во время работы контейнера вы можете заглянуть в контейнер через VNC. Вам нужно только настроить Jenkis- Node -Konfiguration самостоятельно.