如何在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。
- 如何修复“未知的错误:Chrome无法启动:exception退出”在Docker中运行chrome?
- 获得networking:Readtimeout当从水豚启动docker的铬
- Chrome在使用Docker业务时未被捕获
- 如何在docker环境中禁用chrome来使用gpu
- 容器正在产生,但是当产生多个docker容器时,发出的命令失败
- Docker中使用Xvfb的无头Chrome
- Golangselenium包 – 连接到selenium服务器和无头铬
- 在docker里面运行ng头testing(angular-cli karmatesting)
- Docker和Chromium net :: ERR_NETWORK_CHANGED