在Docker中如何运行Google Chrome无头? [英] How to run google chrome headless in docker?

查看:3186
本文介绍了在Docker中如何运行Google Chrome无头?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是如何在docke容器中运行google chrome进行e2e测试,我从官方的jenkins图像中创建一个Docker文件,但是当尝试运行google chrome这个崩溃并显示下一个错误

 无法移动到新的命名空间:支持的PID名称空间,支持网络命名空间,但失败:errno =不允许操作
跟踪/断点陷阱(核心转储)

jenkins码头图像使用debian jessie。



我可以使用--headless标志运行Google Chrome,而不需要x服务器



这是我的docker文件



https://github.com/ripper2hl/jenkinswithchrome



jenkins官方图片



https: //github.com/jenkinsci/docker



一个人运行谷歌chrome与GUI从d ocker



https://github.com/jessfraz/dockerfiles/blob/master/chrome/stable/Dockerfile



我的第一个aproach用于xvbf,但进程是使用更简单 - 无标志



https ://gist.github.com/addyosmani/5336747



我可以在ubuntu服务器上运行相同的命令来安装Chrome,但是docker失败。 p>

在其他意图之后,我使用 - no-sandbox 标志,但是docker图像显示下一个错误。

  [0427 / 180929.595479:警告:audio_manager.cc(295)]检测到AudioManager的多个实例
[0427 / 180929.595537:警告:audio_manager .cc(254)]检测到AudioManager的多个实例
libudev:udev_has_devtmpfs:/ dev上的name_to_handle_at:不允许操作

其实我运行这个命令:



google-chrome-stable --headless --disable-gpu --no-sandbox http://www.google.com

解决方案

我扩展了默认的Dockerfile 硒铬节点按照

  FROM selenium / standalone-chrome-debug:最新
维护者Serge Arbuzov < Serge.Arbuzov@advantechwireless.com>

USER root

### jenkins设置###
RUN apt-get update&& apt-get install -y openssh-server sudo
运行mkdir / var / run / sshd
运行adduser jenkins
运行echo jenkins:jenkins | chpasswd
RUN echojenkins 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节点


My problem is how run google chrome in docker container for e2e testing , i make an Dockerfile from official jenkins image, but when try run google chrome this crash and show the next error

Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
Trace/breakpoint trap (core dumped)

The jenkins docker image use debian jessie.

I can run google chrome with --headless flag and the x server is not needed

This is my docker file

https://github.com/ripper2hl/jenkinswithchrome

jenkins official image

https://github.com/jenkinsci/docker

The repo an person run google chrome with GUI from docker

https://github.com/jessfraz/dockerfiles/blob/master/chrome/stable/Dockerfile

My first aproach is used xvbf but the process is more simple when use --headless flag

https://gist.github.com/addyosmani/5336747

I can run chrome in ubuntu server with same commands for installation but in docker fails.

After other intents i use --no-sandbox flag but docker images shows the next error.

[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

Actually i run this command:

google-chrome-stable --headless --disable-gpu --no-sandbox http://www.google.com

解决方案

I extend default Dockerfile Selenium Chrome Node by following

FROM selenium/standalone-chrome-debug:latest
MAINTAINER Serge Arbuzov <Serge.Arbuzov@advantechwireless.com>

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"]

And my run.sh is

#!/bin/bash

Xvfb :1 -screen 5 1024x768x8 &
/usr/sbin/sshd -D

So i can use default image as Jenkins node

这篇关于在Docker中如何运行Google Chrome无头?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆