
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
[Docker Hub][this-docker] - [GitHub][this-github] - [更新日志][this-changelog] - [维基][this-wiki]
提示 如果需要基于[Ubuntu 20.04 LTS][docker-ubuntu]且包含最新[TigerVNC][tigervnc-releases]/[noVNC][novnc-releases]版本的更新镜像,请查看第三代(G3)镜像:[accetto/ubuntu-vnc-xfce-g3][accetto-docker-ubuntu-vnc-xfce-g3]、[accetto/ubuntu-vnc-xfce-chromium-g3][accetto-docker-ubuntu-vnc-xfce-chromium-g3]或[accetto/ubuntu-vnc-xfce-firefox-g3][accetto-docker-ubuntu-vnc-xfce-firefox-g3]。
提示 除非需要[nss_wrapper][nsswrapper],否则也可使用第二代(G2)镜像[accetto/xubuntu-vnc-novnc-firefox][accetto-docker-xubuntu-vnc-novnc-firefox],它是本镜像的精简版本([镜像层级][accetto-xubuntu-vnc-novnc-wiki-image-hierarchy])。该镜像还支持sudo命令。
关于Firefox镜像的警告
从版本20.10.1开始,不再提供单进程Firefox镜像,多进程模式始终启用。请注意,多进程需要更大的共享内存(/dev/shm),建议至少256MB。更多信息和设置共享内存大小的说明,请查看维基中的[Firefox多进程][that-wiki-firefox-multiprocess]页面。
本仓库包含构建基于[Ubuntu 18.04 LTS][docker-ubuntu]的Docker镜像所需资源,该镜像包含[Xfce][xfce]桌面环境、用于无头使用的VNC/[noVNC][novnc]服务器,以及支持预配置的当前版本[Firefox][firefox]网页浏览器。
该镜像可在Linux、Windows、Mac和NAS设备上成功构建和使用。已在[Ubuntu flavors][ubuntu-flavours]、[Windows 10][docker-for-windows]上的[Docker Desktop][docker-desktop]以及[QNAP][qnap]的[Container Station][container-station]中进行测试。
这是我的无头镜像的第一代(G1),我于2022年3月停止维护。但由于注意到镜像仍在被拉取,我于2022年11月恢复了该项目。
当前的第二版(G1v2)带来了一些改进,主要体现在构建流程和支持脚本上。
它还将之前分离的GitHub项目[ubuntu-vnc-xfce-firefox][accetto-github-ubuntu-vnc-xfce-firefox]、[ubuntu-vnc-xfce-firefox-plus][accetto-github-ubuntu-vnc-xfce-firefox-plus]和[ubuntu-vnc-xfce-chromium][accetto-github-ubuntu-vnc-xfce-chromium]合并为单个项目[ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce]。
本镜像accetto/ubuntu-vnc-xfce-firefox-plus在基础镜像[ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce]上添加了带有自定义支持的[Firefox浏览器][firefox]。
由此镜像创建的容器是理想的轻量级网页浏览器。它们可以轻松丢弃并快速替换,提高浏览隐私性。默认情况下以非root用户运行,提高浏览安全性。
它们也可作为长期浏览器使用,因为偏好设置和配置文件可以预先配置并存储在卷上,即使容器销毁后仍能保留。
有两种自定义方式:一是通过修改提供的user.js文件强制设置Firefox偏好;二是使用预先在卷上创建的完整Firefox配置文件。[维基][this-wiki]中的[HOWTO][this-wiki-howto]页面有更详细的说明。
常用的偏好设置和配置文件也可嵌入到用户构建的新自定义镜像中。已提供现成的Dockerfile(见下文)。[维基][this-wiki]中的[HOWTO][this-wiki-howto]页面描述了如何构建此类镜像。
容器的主要使用场景是后台运行,但也支持前台交互运行。示例见下文描述或[维基][this-wiki]的[HOWTO][this-wiki-howto]部分。
本镜像基于[accetto/ubuntu-vnc-xfce][accetto-docker-ubuntu-vnc-xfce]镜像构建,仅添加了[Firefox][firefox]浏览器及其自定义资源。
该镜像从其[基础镜像][accetto-docker-ubuntu-vnc-xfce]继承以下组件:
请注意,Firefox 67更改了默认配置文件处理方式,因此包含用户偏好文件user.js的预创建文件夹profile0.default在首次启动Firefox前不会自动使用,除非明确选择该文件夹。另一种选择是使用提供的脚本在之后复制用户偏好。更多信息见[issue #3][this-issue-3]。
已添加以下桌面启动器以方便使用:
profile0.default。注意,它在配置文件管理器列表中显示为default**配置文件,实际配置数据将由Firefox自行创建。本镜像主要设计用于后台运行容器,但前台运行在许多情况下也很有用。下文提供了两种运行方式的示例。
该镜像会定期维护和重建。重大变更历史记录在[CHANGELOG][this-changelog]中。
[accetto/ubuntu-vnc-xfce-firefox-plus][this-docker]
latest:基于accetto/ubuntu-vnc-xfce:latestaccetto/ubuntu-vnc-xfce-firefox-plus-preferences
此镜像未实际包含在[Docker仓库][accetto-docker]中,旨在保留预配置的用户特定Firefox偏好。用户可将常用偏好放入配置文件,并使用提供的[Dockerfile-plus-preferences][this-dockerfile-plus-preferences]构建镜像。[维基][this-wiki]中的[HOWTO][this-wiki-howto]页面有详细说明。
accetto/ubuntu-vnc-xfce-firefox-plus-profile
此镜像也未实际包含在[Docker仓库][accetto-docker]中,旨在保留预配置的用户特定Firefox配置文件。用户可准备完整的Firefox配置文件,并使用提供的[Dockerfile-plus-profile][this-dockerfile-plus-profile]构建镜像。[维基][this-wiki]中的[HOWTO][this-wiki-howto]页面有详细说明。
暴露以下TCP端口:
默认VNC用户密码为headless。
容器默认不创建或使用任何外部卷。但以下文件夹适合作为挂载点:
以下挂载点特定于Firefox:
可使用命名卷和绑定挂载。更多关于卷的信息见[Docker文档][docker-doc](例如[管理Docker中的数据][docker-doc-managing-data])。
版本标签有多种用途,在[维基][this-wiki]中有详细描述。版本标签值标识Docker镜像版本,在构建时持久化到镜像中,并在README文件中以徽章形式显示。
但脚本version_sticker.sh可随时用于方便检查已安装应用程序的当前版本。
该脚本部署在由环境变量STARTUPDIR定义的启动文件夹中,默认值为/dockerstartup。
如果在容器内执行不带参数的脚本,将返回容器的当前版本标签值。此值是新计算的,基于容器中必要应用程序的当前版本。
如果任何包含的应用程序已更新到其他版本,当前版本标签值将与持久化值不同。
如果脚本带参数-v(小写v)调用,将打印版本标签值中包含的必要应用程序的详细版本。
如果带参数-V(大写v)调用,将打印更多应用程序的详细版本。
示例见[维基][this-wiki]。
Firefox多进程(也称为Electrolysis或E10S)如果共享内存不足,可能导致Docker容器频繁崩溃(Gah. Your tab just crashed.)。
在Firefox 76.0.1及之前版本,可通过设置环境变量MOZ_FORCE_DISABLE_E10S禁用多进程。但在Firefox 77.0.1中,这会导致几乎所有网页显示异常(未解压)。
Mozilla在后续版本中修复了此问题,但警告未来可能不再支持该开关。因此,我决定标记为latest的主流镜像默认启用多进程,即使需要更大的共享内存。优点是性能更高,网页浏览更安全(沙箱化)。
有一段时间我还维护了singleprocess镜像,用于无法或不想增加共享内存大小的场景。但到Firefox 81.0时,我注意到环境变量MOZ_FORCE_DISABLE_E10S不再生效。此后所有镜像均以多进程模式运行Firefox。
更多信息和不同场景下设置共享内存大小的说明,请查看维基页面[Firefox多进程][that-wiki-firefox-multiprocess]。
多进程Firefox的不稳定性是由于共享内存大小设置过低导致的。Docker默认仅分配64MB。在我的计算机上测试表明,使用至少256MB可完全解决此问题,但在您的系统上可能有所不同。
维基页面[Firefox多进程][that-wiki-firefox-multiprocess]描述了多种增加共享内存大小的方法。如果只需为命令行启动的单个容器设置,操作非常简单。
例如,以下容器的共享内存大小将设置为256MB:
bashdocker run -d -P --shm-size=256m docker.xuanyuan.run/accetto/xubuntu-vnc-xfce-firefox-plus
可通过在容器内执行以下命令检查当前共享内存大小:
bashdf -h /dev/shm
创建的容器默认以非root用户headless:headless运行。
以下容器将监听主机自动选择的TCP端口:
dockerdocker run -d -P docker.xuanyuan.run/accetto/ubuntu-vnc-xfce-firefox-plus
以下容器将监听主机的TCP端口25901(VNC)和26901(noVNC):
dockerdocker run -d -p 25901:5901 -p 26901:6901 docker.xuanyuan.run/accetto/ubuntu-vnc-xfce-firefox-plus
以下容器将创建或重用本地命名卷my_Downloads,挂载为/home/headless/Downloads。容器可通过与上述相同的TCP端口访问:
dockerdocker run -d -P -v my_Downloads:/home/headless/Downloads docker.xuanyuan.run/accetto/ubuntu-vnc-xfce-firefox-plus
或使用带**--mount**标志的更新语法:
dockerdocker run -d -P --mount source=my_Downloads,target=/home/headless/Downloads docker.xuanyuan.run/accetto/ubuntu-vnc-xfce-firefox-plus
更多使用示例见[维基][this-wiki]([HOWTO][this-wiki-howto]部分)。
该镜像支持以下容器启动选项:--wait(默认)、--skip、--debug(也为--tail-log)和--help。此功能继承自[基础镜像][accetto-docker-ubuntu-vnc-xfce]。
以下容器将打印帮助信息,然后自动删除:
dockerdocker run --rm docker.xuanyuan.run/accetto/ubuntu-vnc-xfce-firefox-plus --help
输出摘录,描述其他选项:
docker选项: -w, --wait (默认)保持UI和VNC服务器运行,直到收到SIGINT或SIGTERM信号。 VNC启动后可执行可选命令。 示例:docker run -d -P accetto/ubuntu-vnc-xfce 示例:docker run -it -P --rm accetto/ubuntu-vnc-xfce bash -s, --skip 跳过VNC启动,仅执行提供的命令。 示例:docker run -it -P --rm accetto/ubuntu-vnc-xfce --skip echo $BASH_VERSION -d, --debug 执行VNC启动并跟踪VNC/noVNC日志。 '--debug'后的任何参数均被忽略。CTRL-C停止容器。 示例:docker run -it -P --rm accetto/ubuntu-vnc-xfce --debug -t, --tail-log 与'--debug'相同 -h, --help 打印此帮助信息。 示例:docker run --rm accetto/ubuntu-vnc-xfce
需要注意,即使提供了-it运行参数,--debug启动选项也不会显示命令提示符。这是因为容器正在监视传入的VNC/noVNC连接并实时打印日志。但可通过以下示例轻松附加到运行中的容器。
在主机的第一个终端窗口中,创建名为foo的新容器:
dockerdocker run --name foo docker.xuanyuan.run/accetto/ubuntu-vnc-xfce-firefox-plus --debug
在主机的第二个终端窗口中,在foo容器内执行shell:
dockerdocker exec -it foo /bin/bash
有两种方式使用创建的无头容器。注意默认VNC用户密码为headless。
要通过VNC使用容器,需要VNC查看器(例如[TigerVNC][tigervnc]或[TightVNC][tightvnc])。
VNC查看器应连接到运行容器的主机,并指向主机上映射到容器TCP端口5901的端口。
例如,如果容器在名为mynas的主机上使用上述参数创建,VNC查看器应连接到mynas:25901。
要通过[noVNC][novnc]使用容器,需要支持HTML5的网页浏览器。实际上,任何当前的网页浏览器均可使用。
浏览器应导航到运行容器的主机,并指向主机上映射到容器TCP端口6901的端口。
容器提供两个[noVNC][novnc]客户端——精简版和完整版。两种情况下的连接URL略有不同。为方便使用,实现了一个简单的启动页面。
如果容器在名为mynas的主机
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务