如何在docker中运行google chrome headless?

我的问题是如何在Docker容器中运行谷歌浏览器进行e2etesting。 我从官方的Jenkins图像创buildDockerfile ,但是当试图运行谷歌浏览器时,它崩溃并显示错误:

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

Jenkinsdocker工人使用Debian jessie

我可以用--headless标志运行谷歌--headless ,而不需要X服务器。

这是我的docker文件:

  • https://github.com/ripper2hl/jenkinswithchrome

jenkins官方形象:

  • https://github.com/jenkinsci/docker

回购一个人用Docker运行谷歌浏览器的GUI:

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

我的第一个方法是使用xvbf ,但是使用 – 无--headless标志的过程更简单。

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

我可以在Ubuntu服务器上运行chrome来安装相同的命令,但在docker中失败。

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

 [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

–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 

只需用--no-sandbox启动chrome即可解决问题

我没有答案,但我知道一个容器在Docker中成功地启动了一个无头的Chrome。 selenium一:

selenium铬节点

我用它在Chrome中自动testing我的webapp

希望能帮助到你

我通过以下方式扩展默认的Dockerfile Selenium Chrome Node

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

而我的run.sh是

 #!/bin/bash Xvfb :1 -screen 5 1024x768x8 & /usr/sbin/sshd -D 

所以我可以使用默认图像作为jenkins节点

使用这个图像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 

这里是一个关于容器的简短video 铬无头在行动

我用这个命令在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的debugging端口

有一些修改,你可能会在jenkins得到这个运行!

来源

你也可以看看我们的“docker-headless-vnc-container” https://github.com/ConSol/docker-headless-vnc-container 。 在那里你可以运行一个真正的桌面UI和浏览器。 在容器运行期间,您可以通过VNC查看容器。 你只需要自己设置Jenkis-Node-Konfiguration。