
[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 accetto/xubuntu-vnc-xfce-firefox-plus
可通过在容器内执行以下命令检查当前共享内存大小:
bashdf -h /dev/shm
创建的容器默认以非root用户headless:headless运行。
以下容器将监听主机自动选择的TCP端口:
dockerdocker run -d -P accetto/ubuntu-vnc-xfce-firefox-plus
以下容器将监听主机的TCP端口25901(VNC)和26901(noVNC):
dockerdocker run -d -p 25901:5901 -p 26901:6901 accetto/ubuntu-vnc-xfce-firefox-plus
以下容器将创建或重用本地命名卷my_Downloads,挂载为/home/headless/Downloads。容器可通过与上述相同的TCP端口访问:
dockerdocker run -d -P -v my_Downloads:/home/headless/Downloads accetto/ubuntu-vnc-xfce-firefox-plus
或使用带**--mount**标志的更新语法:
dockerdocker run -d -P --mount source=my_Downloads,target=/home/headless/Downloads 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 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 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的主机
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务