MENU

🚀 Docker中开箱即用的浏览器 | Chromium 浏览器即容器

• September 5, 2025 • Read: 38 • 编码👨🏻‍💻

Chromium 介绍

image-20250425102809098

Chromium 是一个开源浏览器项目,旨在为所有用户构建一种更安全、更快速、更稳定的 Web 体验方式。

🚢 项目地址

🚀Chromium 容器化特性

  • 环境隔离与一致性:无论是在开发机、测试服务器还是生产环境,容器化的 Chromium 都能保持完全相同的运行条件,消除“在我机器上能用”的问题。
  • 一键启动:通过容器镜像(如 Docker Image),可以在任何支持容器化的平台上秒级启动 Chromium 实例,无需手动安装或配置依赖。
  • 无缝集成 CI 工具:在 Jenkins、GitHub Actions 等持续集成系统中,通过容器化 Chromium 直接运行自动化测试,无需预装浏览器或手动配置环境。
  • 低资源开销:相比虚拟机,容器共享主机内核,资源占用更低,适合高密度部署(如同时启动数十个浏览器实例进行压力测试)。
  • 快速启停:容器化的 Chromium 可快速创建和销毁,节省测试和维护时间。
  • 跨平台兼容性:容器化的 Chromium 可以在 Linux、Windows、macOS 等不同操作系统上运行,确保团队协作或跨平台应用的行为一致性。

🛠️ 部署 Chromium 容器版本

👻 先决条件/要求

  • 最低 1GB RAM(推荐 2GB+)
  • 具备 docker,docker-compose 环境

🐳 使用 Docker Compose 部署

  • 此镜像已经封装好了字体在容器中,无需再单独挂载字体
services:
  chromium:
    image: docker.cnb.cool/srebro/pidin/chromium:latest   ##CNB 镜像加速地址
    container_name: chromium
    hostname: chromium
    shm_size: "2gb"
    restart: unless-stopped
    security_opt:
      - seccomp:unconfined # 仅对于 Docker 引擎,如果没有它,Chromium 将在无沙箱测试模式下运行。
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai  # 设置容器所属时区
      - CHROME_CLI=https://pidin.srebro.cn/ # 默认打开的网址
      - LANGUAGE=zh_CN:zh
      - LANG=zh_CN.UTF-8
      - LANG=C.UTF-8  # 设置本地语言为"C.UTF-8",让 KasmVNC 支持中文输入
      - TITLE=Pidin  # 设置页面的标题
    volumes:
      - ./config:/config
      - /var/run/docker.sock:/var/run/docker.sock  # 挂载 docker.sock 配置文件

    ports:
      - 3010:3000
      - 3011:3001
    devices:
      - /dev/dri/:/dev/dri  # 使用 GPU 加速

浏览器访问 Chromium 地址:http://ip:3010/

🧭 使用 Nginx 反向代理

#chromium
  server {
        listen       443 ssl;
        server_name  chromium.srebro.cn;  ##替换成自己的域名
        error_page  404              /404/404.html;
        charset utf-8;

        ssl_certificate /home/application/nginx/cert/srebro.cn.pem; 
        ssl_certificate_key /home/application/nginx/cert/srebro.cn.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

    location / {
    proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header x-wiz-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://localhost:3010;
        }
}

image-20250425110803073

image-20250425110851902

  • 可以同时打开多个浏览器,你会发现都是显示同一个内容,那岂不是可以作为 培训平台 😊 ,用户直接打开浏览器就能看到相同的内容

image-20250425111043058

补充: 在 Nginx 中为页面配置用户名密码认证

上面我们直接通过 Nginx 反向代理了 浏览器,但是放在公网访问,很危险,这时我们可以对 页面配置用户名密码认证

1. 安装 htpasswd 工具

生成密码文件的工具 htpasswd 位于 Apache 工具包中,按系统安装:

# Debian/Ubuntu 系统
sudo apt-get install apache2-utils

# CentOS/RHEL 系统
sudo yum install httpd-tools

2. 创建用户名密码文件

运行以下命令生成密码文件(保存在 /home/application/nginx/.htpasswd):

htpasswd -c /home/application/nginx/.htpasswd pidin
New password: 
Re-type new password: 
Adding password for user pidin

按提示输入密码,文件将包含加密后的凭证。

3. 配置 Nginx

#chromium
  server {
        listen       443 ssl;
        server_name  chromium.srebro.cn;  ##替换成自己的域名
        error_page  404              /404/404.html;
        charset utf-8;

        ssl_certificate /home/application/nginx/cert/srebro.cn.pem; 
        ssl_certificate_key /home/application/nginx/cert/srebro.cn.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

    location / {
        auth_basic "Restricted Access";   # 认证提示标题
        auth_basic_user_file /home/application/nginx/.htpasswd;  # 指向密码文件
        
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header x-wiz-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://localhost:3010;
        }
}

4. 访问验证

  • 提示需要输入用户名/密码

image-20250425113154752

🎁 获取 Chromium

Archives Tip
QR Code for this page
Tipping QR Code