基于Docker Hub速率限制的变更,提供以下仓库地址:
gcr.io/zenika-hub/alpine-chromeeu.gcr.io/zenika-hub/alpine-chromeasia.gcr.io/zenika-hub/alpine-chromeus.gcr.io/zenika-hub/alpine-chromeDockerfile链接latest、100 https://github.com/Zenika/alpine-chrome/blob/master/Dockerfilewith-node、100-with-node、100-with-node-16(带Node.js)https://github.com/Zenika/alpine-chrome/blob/master/with-node/Dockerfilewith-puppeteer、100-with-puppeteer(带Puppeteer)https://github.com/Zenika/alpine-chrome/blob/master/with-puppeteer/Dockerfilewith-playwright、100-with-playwright(带Playwright)https://github.com/Zenika/alpine-chrome/blob/master/with-playwright/Dockerfilewith-selenoid、100-with-selenoid(带Selenoid)https://github.com/Zenika/alpine-chrome/blob/master/with-selenoid/Dockerfilewith-chromedriver、100-with-chromedriver(带Chromedriver)https://github.com/Zenika/alpine-chrome/blob/master/with-chromedriver/Dockerfile89、86、85、84、83、81、80、77、76、73、72、71、68、6489-with-node、86-with-node、85-with-node等89-with-puppeteer、86-with-puppeteer等在极小的Alpine镜像中以无头模式运行的Chrome浏览器
在Web开发中,快速运行端到端测试至关重要。Puppeteer等流行技术使开发者能够实现测试、表单自动化、网页爬取、截图生成、时间线捕获等功能。而秘密在于:Chrome原生支持其中部分功能!🙌
仅使用docker container run -it zenika/alpine-chrome ...启动容器会失败,日志类似https://github.com/Zenika/alpine-chrome/issues/33%E3%80%82%E8%AF%B7%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E4%B8%89%E7%A7%8D%E6%96%B9%E6%B3%95%E3%80%82
--no-sandbox启动容器命令:
docker container run -it --rm zenika/alpine-chrome,并在所有命令中添加--no-sandbox参数。
注意:确保信任目标网站。
no-sandbox参数的简要说明参见此处,深度设计文档参见此处。
SYS_ADMIN权限启动容器命令:
docker container run -it --rm --cap-add=SYS_ADMIN zenika/alpine-chrome
此方法允许Chrome启用沙箱,但从Docker角度看授予了不必要的权限。
seccomp基于Jessie Frazelle的Chrome安全计算(seccomp)配置文件,这是最安全的运行方式。
配置文件:https://github.com/Zenika/alpine-chrome/blob/master/chrome.json%EF%BC%8C%E4%B9%9F%E5%8F%AF%E9%80%9A%E8%BF%87%60wget https://raw.githubusercontent.com/jfrazelle/dotfiles/master/etc/docker/seccomp/chrome.json%60%E8%8E%B7%E5%8F%96%E3%80%82
启动容器命令:
docker container run -it --rm --security-opt seccomp=$(pwd)/chrome.json zenika/alpine-chrome
默认入口点执行命令:chromium-browser --headless --disable-gpu --disable-software-rasterizer --disable-dev-shm-usage
如需完全控制,可覆盖入口点:docker container run -it --rm --entrypoint "" zenika/alpine-chrome chromium-browser ...
命令(需no-sandbox):docker container run -d -p 9222:9222 zenika/alpine-chrome --no-sandbox --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 https://www.chromestatus.com/
在浏览器中访问http://localhost:9222,点击要检查的标签页。将链接开头的https://chrome-devtools-frontend.appspot.com/serve_file/@.../inspector.html?ws=localhost:9222/[END]替换为chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/[END]。
命令(需no-sandbox):docker container run -it --rm zenika/alpine-chrome --no-sandbox --dump-dom https://www.chromestatus.com/
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --print-to-pdf --hide-scrollbars https://www.chromestatus.com/
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars https://www.chromestatus.com/
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=1280,1696 https://www.chromestatus.com/
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=412,732 https://www.chromestatus.com/
命令(需no-sandbox):docker container run -u `id -u $USER` -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=412,732 [***]
进入deno src目录,构建镜像:
docker image build -t zenika/alpine-chrome:with-deno-sample .
启动容器:
docker container run -it --rm zenika/alpine-chrome:with-deno-sample Download https://deno.land/std/examples/welcome.ts Warning Implicitly using master branch https://deno.land/std/examples/welcome.ts Compile https://deno.land/std/examples/welcome.ts Welcome to Deno 🦕
运行自定义文件:
docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome:with-deno-sample run helloworld.ts Compile file:///usr/src/app/helloworld.ts Download https://deno.land/std/fmt/colors.ts Warning Implicitly using master branch https://deno.land/std/fmt/colors.ts Hello world!
借助"Puppeteer"工具,可扩展无头Chrome功能。通过NodeJS代码可实现更复杂的测试。
详见https://github.com/Zenika/alpine-chrome/blob/master/with-puppeteer%E7%9B%AE%E5%BD%95%E3%80%82%E9%9C%80https://github.com/puppeteer/puppeteer/blob/main/versions.js%E3%80%82
若src目录中有NodeJS/Puppeteer脚本pdf.js,启动命令:
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-puppeteer node src/pdf.js
通过"wqy-zenhei"库支持亚洲语言页面(如https://github.com/Zenika/alpine-chrome/blob/master/with-puppeteer/src/screenshot-asia.js%EF%BC%89%EF%BC%9A
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-puppeteer node src/screenshot-asia.js
已测试支持以下语言的网站:
https://m.baidu.com)https://www.yahoo.co.jp/)https://www.naver.com/)https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#working-with-chrome-extensions%EF%BC%8C%E6%97%A0%E5%A4%B4%E6%A8%A1%E5%BC%8F%E4%B8%8D%E6%94%AF%E6%8C%81%E6%B5%8B%E8%AF%95Chrome%E6%89%A9%E5%B1%95%EF%BC%8C%E9%9C%80%E5%80%9F%E5%8A%A9Xvfb%E6%8F%90%E4%BE%9B%E6%98%BE%E7%A4%BA%E7%8E%AF%E5%A2%83%E3%80%82
详见https://github.com/Zenika/alpine-chrome/blob/master/with-puppeteer-xvfb%E7%9B%AE%E5%BD%95%EF%BC%8C%E9%9C%80https://github.com/puppeteer/puppeteer/blob/main/versions.js%E3%80%82
若src目录中有脚本extension.js,扩展文件在chrome-extension目录,启动命令:
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-puppeteer-xvfb node src/extension.js
示例扩展将所有网站背景设为红色,脚本会加载扩展并截取icanhazip.com的截图。
类似"Puppeteer","Playwright"也可扩展无头Chrome功能。
进入with-playwright目录,启动命令:
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-playwright node src/useragent.js
with-playwright/src目录将生成example-chromium.png文件。
默认支持WebGL,如需禁用,启动Chromium时添加--disable-gpu。
with-webgl标签已弃用,将于2020年8月底前移除。
示例命令:
docker container run -it --rm --cap-add=SYS_ADMIN -v $(pwd):/usr/src/app zenika/alpine-chrome --screenshot --hide-scrollbars https://webglfundamentals.org/webgl/webgl-fundamentals.html
docker container run -it --rm --cap-add=SYS_ADMIN -v $(pwd):/usr/src/app zenika/alpine-chrome --screenshot --hide-scrollbars https://browserleaks.com/webgl
相关链接:
ChromeDriver是Selenium WebDriver控制Chrome的独立可执行文件。本镜像可作为Docker化Selenium测试的基础。详见使用Chromedriver运行Selenium测试指南。
https://github.com/aerokube/selenoid%E6%98%AF%E5%9F%BA%E4%BA%8EDocker%E7%9A%84Selenium hub实现,轻量级且功能强大。with-selenoid镜像包含Selenium服务器、Chrome和Chromedriver。
启动命令:
docker container run -it --rm --cap-add=SYS_ADMIN -p 4444:4444 zenika/alpine-chrome:with-selenoid -capture-driver-logs
测试可访问http://localhost:4444/wd/hub。
在GitLab CI等Docker权限受限环境中,可能无法使用--cap-add=SYS_ADMIN,需向chromedriver传递--no-sandbox参数。详见selenoid文档。
命令:
docker container run --rm -it --entrypoint "" --user root zenika/alpine-chrome sh
examples目录提供以下示例:
以下是 zenika/alpine-chrome 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务