我的问题是如何在docker容器中运行google chrome进行e2e测试。我从Jenkins官方图片创建了一个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 docker镜像使用Debian jessie
。
我可以运行带有--headless
标志的google chrome,并且不需要X服务器。
这是我的docker文件:
Jenkins官方图片:
用户从docker运行带有GUI的google chrome的存储库:
我的第一种方法是使用xvbf
,但是当使用--headless
标志时,这个过程会更简单。
我可以用同样的命令在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
发布于 2017-08-24 02:22:49
只需用--no-sandbox
启动chrome就可以解决这个问题。
发布于 2017-05-27 07:34:25
使用这张图片,alpeware/chrome-headless-trunk
在ubuntu中对我很有效!该容器中用于启动无头chrome的命令如下:
/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中运行它!
资料来源
发布于 2018-08-19 03:44:50
这篇文章正是我使用Headless Chrome inside docker运行Karma测试所需要的:
https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3
基本上,解决方案是使用--no-sandbox
标志运行Headless Chrome。
https://stackoverflow.com/questions/43665276
复制相似问题