
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是一个Chromium的Docker容器。
应用程序的图形界面(GUI)可通过现代Web浏览器(客户端无需安装或配置)或任何VNC客户端访问。
特别感谢@jlesage。此镜像基于https://github.com/jlesage/docker-firefox%E6%9E%84%E5%BB%BA%E3%80%82
!Chromium
注意:本快速启动中提供的Docker命令仅作为示例,参数应根据您的需求进行调整。
使用以下命令启动Chromium Docker容器:
docker run -d \ --name=chromium \ -p 5800:5800 \ -v /docker/appdata/chromium:/config:rw \ --shm-size 2g \ overclockedllama/docker-chromium
其中:
/docker/appdata/chromium:应用程序存储配置、日志和任何需要持久化的文件的位置。通过浏览器访问http://您的主机IP:5800即可打开Chromium图形界面。
docker run [-d] \ --name=chromium \ [-e <变量名>=<值>]... \ [-v <主机目录>:<容器目录>[:权限]]... \ [-p <主机端口>:<容器端口>]... \ --shm-size <值> \ overclockedllama/docker-chromium
| 参数 | 描述 |
|---|---|
| -d | 在后台运行容器。如果未设置,容器将在前台运行。 |
| -e | 向容器传递环境变量。详见环境变量部分。 |
| -v | 设置卷映射(允许在主机和容器之间共享文件夹/文件)。详见数据卷部分。 |
| -p | 设置网络端口映射(将容器内部端口暴露给主机)。详见端口部分。 |
| --shm-size | 将/dev/shm的大小设置为<值>。<值>的格式为<数字><单位>,其中数字必须大于0,单位可以是b(字节)、k(千字节)、m(兆字节)或g(千兆字节)。注意:为避免崩溃,建议将此值设置为2g。 |
要自定义容器的某些属性,可以通过-e参数传递以下环境变量(每个变量一个-e)。该参数的值格式为<变量名>=<值>。
| 变量 | 描述 | 默认值 |
|---|---|---|
USER_ID | 应用程序运行的用户ID。详见用户/组ID以了解何时需要设置此值。 | 1000 |
GROUP_ID | 应用程序运行的组ID。详见用户/组ID以了解何时需要设置此值。 | 1000 |
SUP_GROUP_IDS | 应用程序的补充组ID的逗号分隔列表。 | (未设置) |
UMASK | 控制新创建文件的权限掩码。掩码值为八进制表示。默认情况下,此变量未设置,使用默认掩码022,即新创建的文件对所有人可读,但仅所有者可写。参见在线umask计算器:[***] | (未设置) |
TZ | 容器的[时区]。也可以通过在主机和容器之间映射/etc/localtime来设置时区。 | Etc/UTC |
KEEP_APP_RUNNING | 当设置为1时,如果应用程序崩溃或用户退出,将自动重启。 | 0 |
APP_NICENESS | 应用程序运行的优先级。nice值为-20时优先级最高,19时最低。默认情况下,未设置nice值,即使用默认值0。注意:负nice值(提高优先级)需要额外权限。此时,容器应使用--cap-add=SYS_NICE选项运行。 | (未设置) |
CLEAN_TMP_DIR | 当设置为1时,容器启动时将删除/tmp目录中的所有文件。 | 1 |
DISPLAY_WIDTH | 应用程序窗口的宽度(像素)。 | 1280 |
DISPLAY_HEIGHT | 应用程序窗口的高度(像素)。 | 768 |
SECURE_CONNECTION | 当设置为1时,通过加密连接访问应用程序的GUI(无论是通过Web浏览器还是VNC客户端)。详见安全性部分。 | 0 |
VNC_PASSWORD | 连接应用程序GUI所需的密码。详见VNC密码部分。 | (未设置) |
X11VNC_EXTRA_OPTS | 传递给Docker容器中运行的x11vnc服务器的额外选项。警告:仅供高级用户使用。除非您知道自己在做什么,否则不要使用。 | (未设置) |
ENABLE_CJK_FONT | 当设置为1时,将安装开源字体文泉驿正黑。该字体包含大量中/日/韩字符。 | 0 |
下表描述了容器使用的数据卷。映射通过-v参数设置。每个映射的格式为<主机目录>:<容器目录>[:权限]。
| 容器路径 | 权限 | 描述 |
|---|---|---|
/config | rw | 应用程序存储配置、日志和任何需要持久化的文件的位置。 |
以下是容器使用的端口列表。可通过-p参数将它们映射到主机(每个端口映射一个-p)。每个映射的格式为<主机端口>:<容器端口>。容器内部的端口号无法更改,但您可以自由使用主机上的任何端口。
| 端口 | 主机映射 | 描述 |
|---|---|---|
| 5800 | 必须 | 通过Web界面访问应用程序GUI的端口。 |
| 5900 | 可选 | 通过VNC协议访问应用程序GUI的端口。如果不使用VNC客户端,则为可选。 |
如前所述,环境变量、卷映射和端口映射是在创建容器时指定的。
以下步骤描述了添加、删除或更新现有容器参数的方法。基本思路是销毁并重新创建容器:
docker stop chromium
docker rm chromium
docker run命令创建/启动容器,根据需要调整参数。注意:由于所有应用程序数据都保存在/config容器文件夹下,销毁并重新创建容器不会有问题:不会丢失任何数据,应用程序将恢复到相同状态(只要/config文件夹的映射保持不变)。
以下是可与Docker Compose一起使用的docker-compose.yml文件示例。
请根据您的需求进行调整。注意示例中仅包含必要的网络端口。
yamlversion: '3' services: chromium: image: overclockedllama/docker-chromium build: . ports: - "5800:5800" volumes: - "/docker/appdata/chromium:/config:rw"
如果运行容器的系统没有提供简便的Docker镜像更新方法,可以按照以下步骤操作:
docker pull overclockedllama/docker-chromium
docker stop chromium
docker rm chromium
docker run命令启动容器。对于群晖NAS用户,可以使用以下步骤更新容器镜像:
overclockedllama/docker-chromium)。latest标签。对于unRAID,可以通过以下步骤更新容器镜像:
使用数据卷(-v标志)时,主机和容器之间可能会出现权限问题。例如,容器内的用户可能在主机上不存在。这可能会阻止主机正确访问共享卷上的文件和文件夹。
为避免任何问题,您可以指定应用程序应运行的用户。
这是通过USER_ID和GROUP_ID环境变量将用户ID和组ID传递给容器来实现的。
要找到要使用的正确ID,请在主机上使用拥有主机上数据卷的用户执行以下命令:
id <用户名>
输出如下所示:
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),46(plugdev),113(lpadmin)
uid(用户ID)和gid(组ID)的值就是您应该提供给容器的值。
假设容器的端口映射到主机的相同端口,则可以通过以下方式访问应用程序的图形界面:
http://<主机IP地址>:5800
<主机IP地址>:5900
默认情况下,访问应用程序的GUI是通过未加密的连接(HTTP或VNC)进行的。
可以通过SECURE_CONNECTION环境变量启用安全连接。有关如何设置环境变量的更多详细信息,请参见环境变量部分。
启用后,通过浏览器访问应用程序的GUI时将通过HTTPS连接进行。所有HTTP访问将自动重定向到HTTPS。
使用VNC客户端时,VNC连接通过SSL进行。请注意,很少有VNC客户端支持此方法。SSVNC是其中之一。
SSVNC是一个为VNC连接添加加密安全性的VNC查看器。
虽然SSVNC的Linux版本运行良好,但Windows版本存在一些问题。在撰写本文时,最新版本1.0.30无法正常工作,连接失败并显示以下错误:
ReadExact: Socket error while reading
但是,为了您的方便,这里提供了一个非官方的工作版本:
https://github.com/jlesage/docker-baseimage-gui/raw/master/tools/ssvnc_windows_only-1.0.30-r1.zip
与官方软件包的唯一区别是捆绑的stunnel版本已升级到5.49,从而修复了连接问题。
以下是容器所需的证书文件。默认情况下,当它们缺失时,将生成并使用自签名证书。所有文件均为PEM编码的x509证书。
| 容器路径 | 用途 | 内容 |
|---|---|---|
/config/certs/vnc-server.pem | VNC连接加密。 | VNC服务器的私钥和证书,以及任何根证书和中间证书。 |
/config/certs/web-privkey.pem | HTTPS连接加密。 | Web服务器的私钥。 |
/config/certs/web-fullchain.pem | HTTPS连接加密。 | Web服务器的证书,以及任何根证书和中间证书。 |
注意:为防止浏览器或VNC客户端出现任何证书有效性警告/错误,请确保提供您自己的有效证书。
注意:证书文件会被监控,当检测到更改时,相关守护进程会自动重启。
要限制对应用程序的访问,可以指定密码。这可以通过两种方法完成:
VNC_PASSWORD环境变量。/config卷的根目录创建一个.vncpass_clear文件。该文件应包含明文密码。容器启动期间,文件内容将被混淆并移动到.vncpass。VNC密码提供的安全级别取决于两件事:
使用VNC密码时,强烈建议启用安全连接,以防止密码在未加密通道上明文传输。
注意:密码限制为8个字符。此限制来自远程帧缓冲协议RFC(参见7.2.2部分)。超过限制的任何字符都将被忽略。
以下部分包含需要添加到NGINX配置中以反向代理到此容器的配置。
反向代理服务器可以基于主机名或URL路径路由HTTP请求。
在此场景中,每个主机名路由到不同的应用程序/容器。
例如,假设反向代理服务器与该容器运行在同一台机器上。服务器会将所有发送到chromium.domain.tld的HTTP请求代理到127.0.0.1:5800的容器。
以下是要添加到NGINX配置中的相关配置元素:
map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream docker-chromium { # 如果反向代理服务器与Docker容器不在同一台机器上,请在此处使用Docker主机的IP。 # 确保根据容器的5800端口在主机上的映射方式调整端口。 server 127.0.0.1:5800; } server { [...] server_name chromium.domain.tld; location / { proxy_pass http://docker-chromium; } location /websockify { proxy_pass http://docker-chromium; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_read_timeout 86400; } }
在此场景中,主机名相同,但使用不同的URL路径路由到不同的应用程序/容器。
例如,假设反向代理服务器与该容器运行在同一台机器上。服务器会将所有server.domain.tld/chromium的HTTP请求代理到127.0.0.1:5800的容器。
以下是要添加到NGINX配置中的相关配置元素:
map $http_upgrade $connection_upgrade { default upgrade;
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务