专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏

zenika/alpine-chrome Docker 镜像 - 轩辕镜像

alpine-chrome
zenika/alpine-chrome
自动构建
在极小的Alpine镜像中以无头模式运行的Chrome浏览器,适用于网页测试、自动化和内容生成等场景,体积小巧且功能丰富。
72 收藏0 次下载activezenika镜像
🚀专业版镜像服务,面向生产环境设计
版本下载
🚀专业版镜像服务,面向生产环境设计

![GitHub Stars]([] ![Docker Build Status]([] ![Docker Pulls]([] ![Docker Stars]([]

Available registries

Following the changes with the Rate Limiting on Docker Hub. Tweet here for more information in 🇫🇷

  • On the Docker Hub without any prefix: zenika/alpine-chrome
  • On Google Cloud - available in the closest region:
    • Global: gcr.io/zenika-hub/alpine-chrome
    • Europe: eu.gcr.io/zenika-hub/alpine-chrome
    • Asia: asia.gcr.io/zenika-hub/alpine-chrome
    • US: us.gcr.io/zenika-hub/alpine-chrome

Supported tags and respective Dockerfile links

  • latest, 100 (Dockerfile)
  • with-node, 100-with-node, 100-with-node-16 (Dockerfile)
  • with-puppeteer, 100-with-puppeteer (Dockerfile)
  • with-playwright, 100-with-playwright (Dockerfile)
  • with-selenoid, 100-with-selenoid (Dockerfile)
  • with-chromedriver, 100-with-chromedriver (Dockerfile)
  • 89, 86, 85, 84, 83, 81, 80, 77, 76, 73, 72, 71, 68, 64
  • 89-with-node, 86-with-node, 85-with-node, 84-with-node, 83-with-node, 81-with-node, 80-with-node, 77-with-node, 76-with-node
  • 89-with-puppeteer, 86-with-puppeteer, 85-with-puppeteer,84-with-puppeteer, 83-with-puppeteer, 81-with-puppeteer, 80-with-puppeteer, 77-with-puppeteer, 76-with-puppeteer

alpine-chrome

Chrome running in headless mode in a tiny Alpine image


🤔 Why use a Headless Chrome

In the world of webdev, the ability to run quickly end-to-end tests are important. Popular technologies like Puppeteer enable developers to make fun things like testing, automating forms, crawling, generating screenshots, capturing timeline... And there is a secret: some of these features are directly available on Chrome! 🙌

💡 Crafting the perfect container

  • 📦 Tiniest Headless Chrome (Compressed size: 423 MB)
  • 🐳 Easy to use, ephemeral and reproducible Headless Chrome with Docker
  • 📝 Doc-friendly with examples for printing the DOM, generating an image with a mobile ratio or generating a PDF.
  • 👷‍♂️ Autobuild with the Docker Hub to sync the project and ship the images with confidence
  • 📌 Up-to-date latest Chromium and tags available to test different versions of Chromium
  • 🔐 Secure with the best way to use Chrome and Docker - See "3 ways to securely use Chrome Headless" section
  • 🌐 Ready for internationalisation use: support for asian characters - See "screenshot-asia.js" file
  • 💄 Ready for design use: support for WebGL, support for emojis- See "How to use with WebGL" section and "Emojis are not rendered properly" section
  • 📄 Open Source with an Apache2 licence
  • 👥 Community-built with external contributors - See "✨ Contributors" section
  • 💚 Dev-friendly with examples using NodeJS, Puppeteer, docker-compose and also a test with a X11 display - See "Run examples" section

3 ways to securely use Chrome Headless with this image

❌ With nothing

Launching the container using only docker container run -it zenika/alpine-chrome ... will fail with some logs similar to #33.

Please use the 3 others ways to use Chrome Headless.

✅ With --no-sandbox

Launch the container using:

docker container run -it --rm zenika/alpine-chrome and use the --no-sandbox flag for all your commands.

Be careful to know the website you're calling.

Explanation for the no-sandbox flag in a quick introduction here and for More in depth design document here

✅ With SYS_ADMIN capability

Launch the container using: docker container run -it --rm --cap-add=SYS_ADMIN zenika/alpine-chrome

This allows to run Chrome with sandboxing but needs unnecessary privileges from a Docker point of view.

✅ The best: With seccomp

Thanks to ever-awesome Jessie Frazelle seccomp profile for Chrome. This is The most secure way to run this Headless Chrome docker image.

chrome.json

Also available here wget [***]

Launch the container using: docker container run -it --rm --security-opt seccomp=$(pwd)/chrome.json zenika/alpine-chrome

How to use in command line

Default entrypoint

The default entrypoint does the following command: chromium-browser --headless --disable-gpu --disable-software-rasterizer --disable-dev-shm-usage

You can get full control by overriding the entrypoint using: docker container run -it --rm --entrypoint "" zenika/alpine-chrome chromium-browser ...

Use the devtools

Command (with 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 [***]

Open your browser to: http://localhost:9222 and then click on the tab you want to inspect. Replace the beginning https://chrome-devtools-frontend.appspot.com/serve_file/@.../inspector.html?ws=localhost:9222/[END] by chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/[END]

Print the DOM

Command (with no-sandbox): docker container run -it --rm zenika/alpine-chrome --no-sandbox --dump-dom [***]

Print a PDF

Command (with no-sandbox): docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --print-to-pdf --hide-scrollbars [***]

Take a screenshot

Command (with no-sandbox): docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars [***]

Size of a standard letterhead.

Command (with no-sandbox): docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=1280,1696 [***]

Nexus 5x

Command (with no-sandbox): docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=412,732 [***]

Screenshot owned by current user (by default the file is owned by the container user)

Command (with 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 [***]

How to use with Deno

Go the deno src folder. Build your image using this command:

docker image build -t zenika/alpine-chrome:with-deno-sample .

Then launch the container:

docker container run -it --rm zenika/alpine-chrome:with-deno-sample
 Download [***]
 Warning Implicitly using master branch [***]
 Compile [***]
 Welcome to Deno 🦕

With your own file, use this command:

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 [***]
Warning Implicitly using master branch [***]
Hello world!

How to use with Puppeteer

With tool like "Puppeteer", we can add a lot things with our Chrome Headless.

With some code in NodeJS, we can improve and make some tests.

See the "with-puppeteer" folder for more details. We have to follow the mapping of Chromium => Puppeteer described here.

If you have a NodeJS/Puppeteer script in your src folder named pdf.js, you can launch it using the following command:

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

With the "wqy-zenhei" library, you could also manipulate asian pages like in "screenshot-asia.js"

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

These websites are tested with the following supported languages:

  • Chinese (with [***])
  • Japanese (with [***])
  • Korean (with [***])

How to use with Puppeteer to test a Chrome Extension

According to puppeteer official doc you can not test a Chrome Extension in headleass mode. You need a display available, that's where Xvfb comes in.

See the "with-puppeteer-xvfb" folder for more details. We have to follow the mapping of Chromium => Puppeteer described here.

Assuming you have a NodeJS/Puppeteer script in your src folder named extension.js, and the unpacked extension in the chrome-extension folder, you can launch it using the following command:

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

The extension provided will change the page background in red for every website visited. This demo will load the extension and take a screenshot of the icanhazip.com website.

How to use with Playwright

Like "Puppeteer", we can do a lot things using "Playwright" with our Chrome Headless.

Go to the with-playwright folder and launch the following command:

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

A example-chromium.png file will be created in your with-playwright/src folder.

How to use with WebGL

By default, this image works with WebGL.

If you want to disable it, make sure to add --disable-gpu when launching Chromium.

The with-webgl tag still exists but is deprecated. It will be removed before end of August 2020.

docker container run -it --rm --cap-add=SYS_ADMIN -v $(pwd):/usr/src/app zenika/alpine-chrome --screenshot --hide-scrollbars [***]

docker container run -it --rm --cap-add=SYS_ADMIN -v $(pwd):/usr/src/app zenika/alpine-chrome --screenshot --hide-scrollbars [***]

Links:

  • [***]
  • [***]
  • 'use-gl' values here

How to use with Chromedriver

ChromeDriver is a separate executable that Selenium WebDriver uses to control Chrome. You can use this image as a base for your Docker based selenium tests. See Guide for running Selenium tests using Chromedriver.

How to use with Selenoid

Selenoid is a powerful implementation of Selenium hub using Docker containers to launch browsers. Even if it used to run browsers in docker containers, it can be quite useful as lightweight Selenium replacement. with-selenoid image is a self sufficient selenium server, chrome and chromedriver installed.

You can run it with following command:

docker container run -it --rm --cap-add=SYS_ADMIN  -p 4444:4444 zenika/alpine-chrome:with-selenoid -capture-driver-logs

And run your tests against http://localhost:4444/wd/hub

One of the use-cases might be running automation tests in the environment with restricted Docker environment like on some CI systems like GitLab CI, etc. In such case you may not have permissions for --cap-add=SYS_ADMIN and you will need to pass the --no-sandbox to chromedriver.

See more selenoid docs

Run as root and override default entrypoint

We can run the container as root with this command:

docker container run --rm -it --entrypoint "" --user root zenika/alpine-chrome sh

Run examples

Some examples are available on the examples directory:

  • 🐳 docker-compose to launch a chrome calling a nginx server in the same docker-compose
  • ☸️ kubernetes to launch a pod with a headless chrome
  • 🖥 x11 to experiment this image with a X11 server.

References

  • Headless Chrome website: [***]

  • List of all options of the "Chromium" command line: [***]

  • Where to file issues: [***]

  • Maintained by: [***]

Versions (in latest)

Alpine version

docker container run -it --rm --entrypoint "" zenika/alpine-chrome cat /etc/alpine-release
3.15.4

Chrome version

docker container run -it --rm --entrypoint "" zenika/alpine-chrome chromium-browser --version
Chromium 100.0.4896.60

Image disk size

docker image inspect zenika/alpine-chrome --format='{{.Size}}'
357467827 # 341 MB

✨ Contributors

Thanks goes to these wonderful people (emoji key):


Julien Landuré
💻 👀 ⚠️ 🤔 💬 🚧

Yonggang Luo
💻 🤔 💬

Dennis Koch
💻 🤔 💬

Sargon Piraev
💻

Eric Briand
💻

栩风
💻 🤔

Roman Pushkin
💻

Juan Lladó
💻

Chris Watson
🐛

Wang Guan
🐛

Óscar Soto Sánchez
🐛

Calinoiu Alexandru Nicolae
🐛

Mark Macdonald
🐛

Felix Mann
🐛

horacimacias
🐛

Emil Kjer
🐛

Jeff Gonzalez
🐛

George Gaál
🐛

wheestermans31
🐛

Hodossy, Szabolcs
🐛

Corentin Ardeois
🐛

Danny Althoff
💬

Chad Wilson
💬 🤔

fenchu
🐛

nrawat***
🐛

x0rzkov
🐛 🤔

Jakob Ketterl
查看更多 alpine-chrome 相关镜像 →
zenika/sensei logo
zenika/sensei
by zenika
Sensei是训练材料的编译器,用于生成PDF以及提供幻灯片和实验内容的Web服务,可替代zenika-formation-framework,支持通过Docker或Node.js运行。
210K+ pulls
上次更新:1 个月前
zenika/alpine-firestore-backup logo
zenika/alpine-firestore-backup
by zenika
基于Alpine Google Cloud SDK镜像的Firestore备份工具镜像,用于在谷歌云平台内自动执行Firestore数据备份。
10K+ pulls
上次更新:27 天前
zenika/k8s-training-tools logo
zenika/k8s-training-tools
by zenika
暂无描述
10K+ pulls
上次更新:7 个月前

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

登录仓库拉取

通过 Docker 登录认证访问私有仓库

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

Docker Compose

Docker Compose 项目配置

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

宝塔面板

在宝塔面板一键配置镜像

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

极空间

极空间 NAS 系统配置服务

爱快路由

爱快 iKuai 路由系统配置

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

专属域名拉取

无需登录使用专属域名

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像支持哪些镜像仓库?

专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
zenika/alpine-chrome
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
提交工单
咨询镜像拉取问题请 提交工单,官方技术交流群:13763429
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
咨询镜像拉取问题请提交工单,官方技术交流群:
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.
轩辕镜像 官方专业版 Logo
轩辕镜像轩辕镜像官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 13763429