LinuxServer.io 团队为您带来另一款容器发布,其特点包括:
您可以通过以下渠道找到我们:
https://github.com/linuxserver/docker-webtop - 基于 Alpine、Ubuntu、Fedora 和 Arch 的容器,包含官方支持的完整桌面环境,可通过任何现代 Web 浏览器访问。
我们利用 docker manifest 实现多平台支持。更多信息可从 docker https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list 和我们的公告 此处 获取。
只需拉取 lscr.io/linuxserver/webtop:latest 即可获取适合您架构的正确镜像,但您也可以通过标签拉取特定架构的镜像。
此镜像支持的架构如下:
| 架构 | 是否可用 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64- |
| arm64 | ✅ | arm64v8- |
此镜像提供多种可通过标签获取的版本。请仔细阅读描述,并在使用不稳定或开发标签时谨慎操作。
| 标签 | 是否可用 | 描述 |
|---|---|---|
| latest | ✅ | XFCE Alpine |
| alpine-i3 | ✅ | i3 Alpine *支持 Wayland |
| alpine-kde | ✅ | KDE Alpine *仅支持 Wayland |
| alpine-mate | ✅ | MATE Alpine |
| arch-i3 | ✅ | i3 Arch *支持 Wayland |
| arch-kde | ✅ | KDE Arch *支持 Wayland |
| arch-mate | ✅ | MATE Arch |
| arch-xfce | ✅ | XFCE Arch *支持 Wayland |
| debian-i3 | ✅ | i3 Debian *支持 Wayland |
| debian-kde | ✅ | KDE Debian |
| debian-mate | ✅ | MATE Debian |
| debian-xfce | ✅ | XFCE Debian |
| fedora-i3 | ✅ | i3 Fedora *支持 Wayland |
| fedora-kde | ✅ | KDE Fedora *支持 Wayland |
| fedora-mate | ✅ | MATE Fedora |
| fedora-xfce | ✅ | XFCE Fedora |
| ubuntu-i3 | ✅ | i3 Ubuntu *支持 Wayland |
| ubuntu-kde | ✅ | KDE Ubuntu *仅支持 Wayland |
| ubuntu-mate | ✅ | MATE Ubuntu |
| ubuntu-xfce | ✅ | XFCE Ubuntu *支持 Wayland |
可通过以下地址访问应用:
此镜像默认使用自签名证书。这自然意味着协议为 https。如果您使用的反向代理会验证证书,则需要为容器禁用此检查。
现代 GUI 桌面应用可能与最新的 Docker 系统调用限制存在兼容性问题。在具有较旧内核或 libseccomp 版本的主机上,您可以使用带有 --security-opt seccomp=unconfined 设置的 Docker 来允许这些系统调用。
[!WARNING] 此容器提供对主机系统的特权访问。除非已正确配置安全措施,否则不要将其暴露在互联网上。
完整功能需要 HTTPS。 现代浏览器功能(如用于视频和音频的 WebCodecs)在不安全的 HTTP 连接上无法运行。
默认情况下,此容器没有身份验证。可选的 CUSTOM_USER 和 PASSWORD 环境变量可启用基本 HTTP 身份验证,这仅适用于在受信任的本地网络上保护容器。对于互联网暴露,我们强烈建议将容器放在反向代理(如 https://github.com/linuxserver/docker-swag%EF%BC%89%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7%94%A8%E5%BC%BA%E5%A4%A7%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%9C%BA%E5%88%B6%E3%80%82
Web 界面包含一个具有无密码 sudo 访问权限的终端。任何有权访问 GUI 的用户都可以在容器内获得 root 控制权,安装任意软件,并探测您的本地网络。
虽然通常不推荐,但某些旧环境(特别是那些使用较旧硬件或过时 Linux 发行版的环境)可能需要停用标准 seccomp 配置文件才能运行容器化桌面软件。这可以通过使用 --security-opt seccomp=unconfined 参数实现。仅在绝对必要时使用此选项,因为它会禁用 Docker 的关键安全层,增加容器逃逸漏洞的可能性,这一点至关重要。
如果您注意到文本模糊,特别是黑色背景上的浅色文本,可以通过在侧边栏中启用 FullColor 4:4:4 编码或使用 jpeg 编码模式向浏览器发送真正的 8 位颜色。
硬件加速注意事项: 目前,只有 Nvidia GPU 支持在 Zero Copy 模式下编码此颜色配置文件。如果在 Intel 或 AMD GPU 上启用 FullColor 4:4:4,系统将回退到 CPU 编码。这会迫使 CPU 从 GPU 读取像素,导致性能显著下降。
我们已将桌面容器从 X11 过渡到现代 Wayland 栈,现在 Wayland 是默认选项。
硬件回退注意事项: 在 x86_64 架构上,Wayland 栈需要支持 AVX2 的处理器(Intel Haswell 代或更新版本)。如果您的处理器缺少 AVX2(例如较旧的 CPU 或某些低端赛扬处理器),容器将自动回退到 X11。
重要: X11 的 GPU 加速支持已弃用。未来硬件加速的开发将完全集中在 Wayland 栈上。
如果您遇到兼容性问题并需要手动禁用 Wayland(强制回退到 X11),可以通过设置以下环境变量来实现:
-e PIXELFLUX_WAYLAND=false要在 Wayland 模式下使用硬件加速,我们区分用于渲染(3D 应用/桌面)和编码(视频流)的显卡。
配置变量:
DRINODE:用于渲染(EGL)的 GPU 路径。DRI_NODE:用于编码(VAAPI/NVENC)的 GPU 路径。如果两个变量指向同一设备,容器将自动启用零拷贝(Zero Copy)编码,显著降低 CPU 使用率和延迟。如果设置为不同设备,则一个用于渲染,一个用于编码,并进行 CPU 回读。
也可使用环境变量 AUTO_GPU=true,设置后容器中检测到的第一张显卡(例如 /dev/dri/renderD128)将被使用并配置为零拷贝模式。
适用于 Intel 和 AMD GPU。
devices:
- /dev/dri:/dev/dri
environment:
- PIXELFLUX_WAYLAND=true
# 可选:如果存在多个设备,指定设备(例如:/dev/dri/renderD129)
- DRINODE=/dev/dri/renderD128
- DRI_NODE=/dev/dri/renderD128
[!NOTE] Alpine 基础镜像不支持 Nvidia。
前提条件:
.run 文件安装驱动。nvidia-drm.modeset=1 nvidia_drm.fbdev=1。/etc/default/grub 并将参数添加到现有的 GRUB_CMDLINE_LINUX_DEFAULT 行:GRUB_CMDLINE_LINUX_DEFAULT=" nvidia-drm.modeset=1 nvidia_drm.fbdev=1"
然后通过运行以下命令应用更改:
sudo update-grub
/boot/syslinux/syslinux.cfg 并将 nvidia-drm.modeset=1 nvidia_drm.fbdev=1 添加到 Unraid OS 启动项的 append 行末尾。硬件初始化: 在无头系统上,Nvidia 显卡需要在 GPU 上插入物理虚拟插头,以便 DRM 正确初始化。
Docker 运行时: 配置主机 Docker 守护进程以使用 Nvidia 运行时:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Compose 配置:
---
services:
webtop:
image: lscr.io/linuxserver/webtop:latest
environment:
- PIXELFLUX_WAYLAND=true
# 确保这些指向运行时注入的渲染节点(通常是 renderD128)
- DRINODE=/dev/dri/renderD128
- DRI_NODE=/dev/dri/renderD128
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [compute,video,graphics,utility]
--gpus all --runtime nvidia 添加到额外参数中。此容器与 SealSkin 兼容。
SealSkin 是一个自托管的客户端-服务器平台,提供安全认证和协作功能,同时使用浏览器扩展拦截用户操作(如点击链接或下载文件)并将其重定向到运行在远程服务器上的安全、隔离的应用环境。
此容器基于 https://github.com/linuxserver/docker-baseimage-selkies%E3%80%82
点击展开:可选环境变量
| 变量 | 描述 |
|---|---|
| PIXELFLUX_WAYLAND | 如果设置为 true,容器将以 Wayland 模式初始化,运行 https://github.com/Smithay/smithay 和 Labwc,同时启用 GPU 零拷贝编码 |
| SELKIES_DESKTOP | 如果设置为 true 且处于 Wayland 模式,将使用 labwc 初始化一个简单面板 |
| CUSTOM_PORT | 容器监听 HTTP 的内部端口,如需更改默认端口 3000 可设置此变量 |
| CUSTOM_HTTPS_PORT | 容器监听 HTTPS 的内部端口,如需更改默认端口 3001 可设置此变量 |
| CUSTOM_WS_PORT | 容器监听 WebSocket 的内部端口,如需更改默认端口 8082 可设置此变量 |
| CUSTOM_USER | HTTP 基本认证用户名,默认值为 abc |
| DRI_NODE | 编码 GPU:启用 VAAPI/NVENC 流编码并使用指定设备(例如 /dev/dri/renderD128) |
| DRINODE | 渲染 GPU:指定用于 EGL/3D 加速的 GPU(例如 /dev/dri/renderD129) |
| AUTO_GPU | 如果设置为 true 且处于 Wayland 模式,将自动使用第一个可用 GPU 进行编码和渲染(例如 /dev/dri/renderD128) |
| PASSWORD | HTTP 基本认证密码,默认值为 abc。如果未设置,则不进行认证 |
| SUBFOLDER | 应用的子文件夹(如果运行子文件夹反向代理),需包含前后斜杠(例如 /subfolder/) |
| TITLE | 网页浏览器中显示的页面标题,默认值为 "Selkies" |
| DASHBOARD | 允许用户设置仪表板。选项:selkies-dashboard、selkies-dashboard-zinc、selkies-dashboard-wish |
| FILE_MANAGER_PATH | 修改默认上传/下载文件路径,路径必须对 abc 用户有适当权限 |
| START_DOCKER | 如果设置为 false,具有特权的容器将不会自动启动 DinD Docker 配置 |
| DISABLE_IPV6 | 如果设置为 true 或任何值,将禁用 IPv6 |
| LC_ALL | 设置容器运行的语言(例如 fr_FR.UTF-8 ar_AE.UTF-8) |
| NO_DECOR | 如果设置,应用将无窗口边框运行,用于 PWA。(可通过 Ctrl+Shift+d 启用/禁用边框) |
| NO_FULL | 使用 openbox 时不自动全屏应用 |
| NO_GAMEPAD | 禁用用户空间游戏手柄插入程序注入 |
| DISABLE_ZINK | 如果检测到显卡,不设置 Zink 环境变量(用户空间应用将使用 CPU 渲染) |
| DISABLE_DRI3 | 如果检测到显卡,不使用 DRI3 加速(用户空间应用将使用 CPU 渲染) |
| MAX_RES | 传递容器的最大分辨率,默认值为 16k 15360x8640 |
| WATERMARK_PNG | 容器内水印 PNG 的完整路径(例如 /usr/share/selkies/www/icon.png) |
| WATERMARK_LOCATION | 流上绘制图像的位置,选项如下 |
WATERMARK_LOCATION 选项:
点击展开:可选运行配置(DinD 和 GPU 挂载)
| 参数 | 描述 |
|---|---|
--privileged | 启动Docker-in-Docker (DinD)环境。为获得更好性能,可从主机挂载Docker数据目录,例如:-v /path/to/docker-data:/var/lib/docker。 |
-v /var/run/docker.sock:/var/run/docker.sock | 挂载主机的Docker套接字,以便从容器内部管理主机容器。 |
--device /dev/dri:/dev/dri | 将GPU挂载到容器中,可与 DRINODE 环境变量配合使用,利用主机显卡实现GPU加速应用。 |
点击展开:传统X11分辨率与加速
[!NOTE] 本部分仅适用于未使用
PIXELFLUX_WAYLAND=true的情况。
在X11模式下通过Nvidia DRM或DRI3使用3D加速时,将虚拟显示限制在合理的最大分辨率至关重要,以避免内存耗尽或性能下降。
-e MAX_RES=3840x2160这会将总虚拟帧缓冲区设置为4K。默认情况下,虚拟显示器为16K。如果在加速X11会话中遇到性能问题,请尝试将分辨率限制为1080p,然后逐步提高:
-e SELKIES_MANUAL_WIDTH=1920
-e SELKIES_MANUAL_HEIGHT=1080
-e MAX_RES=1920x1080
要以其他语言启动桌面会话,请设置 LC_ALL 环境变量。例如:
-e LC_ALL=zh_CN.UTF-8 - 中文-e LC_ALL=ja_JP.UTF-8 - 日语-e LC_ALL=ko_KR.UTF-8 - 韩语-e LC_ALL=ar_AE.UTF-8 - 阿拉伯语-e LC_ALL=ru_RU.UTF-8 - 俄语-e LC_ALL=es_MX.UTF-8 - 西班牙语(拉丁美洲)-e LC_ALL=de_DE.UTF-8 - 德语-e LC_ALL=fr_FR.UTF-8 - 法语-e LC_ALL=nl_NL.UTF-8 - 荷兰语-e LC_ALL=it_IT.UTF-8 - 意大利语在容器内安装应用有两种方法:PRoot Apps(推荐用于持久化)和原生应用(Native Apps)。
如果容器被重新创建,原生安装的软件包(例如通过 apt-get install)将不会持久保存。为了在容器更新后保留应用及其设置,建议使用 https://github.com/linuxserver/proot-apps%E3%80%82%E8%BF%99%E4%BA%9B%E6%98%AF%E5%AE%89%E8%A3%85%E5%88%B0%E7%94%A8%E6%88%B7%E6%8C%81%E4%B9%85%E5%8C%96 $HOME 目录的可移植应用。
要安装应用,请在容器内使用命令行:
proot-apps install filezilla
支持的应用列表可在 https://github.com/linuxserver/proot-apps?tab=readme-ov-file#supported-apps 查看。
您可以使用 https://github.com/linuxserver/docker-mods/tree/universal-package-install 模块从系统原生仓库安装软件包。此方法会增加容器启动时间,且不具备持久性。在您的 compose.yaml 中添加以下内容:
environment:
- DOCKER_MODS=linuxserver/mods:universal-package-install
- INSTALL_PACKAGES=libfuse2|git|gdb
点击展开:强化选项
这些变量可用于为单应用场景锁定桌面环境或限制用户功能。
| 变量 | 描述 |
|---|---|
HARDEN_DESKTOP | 启用 DISABLE_OPEN_TOOLS、DISABLE_SUDO 和 DISABLE_TERMINALS。如果用户未显式设置相关Selkies UI设置(SELKIES_FILE_TRANSFERS、SELKIES_COMMAND_ENABLED、SELKIES_UI_SIDEBAR_SHOW_FILES、SELKIES_UI_SIDEBAR_SHOW_APPS),也会进行设置。 |
HARDEN_OPENBOX | 启用 DISABLE_CLOSE_BUTTON、DISABLE_MOUSE_BUTTONS 和 HARDEN_KEYBINDS。如果用户未设置 RESTART_APP,也会自动设置,确保主应用关闭后自动重启。 |
单独的强化变量:
| 变量 | 描述 |
|---|---|
DISABLE_OPEN_TOOLS | 如果为true,通过移除执行权限禁用 xdg-open 和 exo-open 二进制文件。 |
DISABLE_SUDO | 如果为true,通过移除执行权限并使无密码sudo配置失效来禁用 sudo 命令。 |
DISABLE_TERMINALS | 如果为true,通过移除执行权限并从Openbox右键菜单隐藏常见终端模拟器来禁用它们。 |
DISABLE_CLOSE_BUTTON | 如果为true,移除Openbox窗口管理器中窗口标题栏的关闭按钮。 |
DISABLE_MOUSE_BUTTONS | 如果为true,禁用Openbox窗口管理器中的右键和中键上下文菜单及操作。 |
HARDEN_KEYBINDS | 如果为true,禁用可能绕过其他强化选项的默认Openbox键盘快捷键(例如 Alt+F4 关闭窗口、Alt+Escape 显示根菜单)。 |
RESTART_APP | 如果为true,启用看门狗服务,当主应用关闭时自动重启。用户的自动启动脚本会设为只读并归root所有,防止篡改。 |
点击展开:Selkies应用设置
使用环境变量可以配置应用的各个方面。
布尔值与锁定:
布尔值设置接受 true 或 false。您还可以通过追加 |locked 防止用户在UI中更改布尔值设置。
-e SELKIES_USE_CPU="true|locked"枚举与列表:
这些设置接受逗号分隔的值列表。第一项为默认值。如果仅提供一项,UI下拉菜单将隐藏。
-e SELKIES_ENCODER="jpeg"范围:
使用连字符分隔的 min-max 格式表示滑块,或使用单个数字锁定值。
-e SELKIES_FRAMERATE="60"手动分辨率模式:
如果设置了 SELKIES_MANUAL_WIDTH 或 SELKIES_MANUAL_HEIGHT,分辨率将锁定为这些值。
容器通过运行时传递的参数(如上文所述)进行配置。这些参数用冒号分隔,分别表示 :。例如,-p 8080:80 会将容器内部的 80 端口暴露出来,使其可通过主机 IP 在容器外部的 8080 端口访问。
| 参数 | 功能 |
|---|---|
-p 3000:3000 | Web 桌面 GUI HTTP,必须进行代理 |
-p 3001:3001 | Web 桌面 GUI HTTPS |
-e PUID=1000 | 用于用户 ID - 详见下方说明 |
-e PGID=1000 | 用于组 ID - 详见下方说明 |
-e TZ=Etc/UTC | 指定要使用的时区,参见此 列表。 |
-v /config | abc 用户的主目录 |
--shm-size= | 所有桌面镜像推荐使用 |
您可以通过使用特殊前缀 FILE__ 从文件中设置任何环境变量。
例如:
-e FILE__MYVAR=/run/secrets/mysecretvariable
这会根据 /run/secrets/mysecretvariable 文件的内容设置环境变量 MYVAR。
对于我们所有的镜像,您可以通过可选的 -e UMASK=022 设置来覆盖容器内启动服务的默认umask设置。
请记住,umask 不是 chmod,它根据其值从权限中减去,而不是添加。在请求支持前,请先阅读此处。
使用卷(-v 标志)时,主机操作系统和容器之间可能会出现权限问题,我们通过允许您指定用户 PUID 和组 PGID 来避免此问题。
确保主机上的任何卷目录都归您指定的同一用户所有,这样任何权限问题都会像魔法一样消失。
在此示例中 PUID=1000 和 PGID=1000,要查找您的ID,请使用 id your_user,如下所示:
id your_user
示例输出:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
我们发布了各种 https://github.com/linuxserver/docker-mods%EF%BC%8C%E4%BB%A5%E5%9C%A8%E5%AE%B9%E5%99%A8%E5%86%85%E5%90%AF%E7%94%A8%E9%A2%9D%E5%A4%96%E5%8A%9F%E8%83%BD%E3%80%82%E5%8F%AF%E7%94%A8%E4%BA%8E%E6%AD%A4%E9%95%9C%E5%83%8F%E7%9A%84Mods%E5%88%97%E8%A1%A8%EF%BC%88%E5%A6%82%E6%9C%89%EF%BC%89%E4%BB%A5%E5%8F%8A%E5%8F%AF%E5%BA%94%E7%94%A8%E4%BA%8E%E6%88%91%E4%BB%AC%E4%BB%BB%E4%BD%95%E9%95%9C%E5%83%8F%E7%9A%84%E9%80%9A%E7%94%A8Mods%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87%E4%B8%8A%E6%96%B9%E7%9A%84%E5%8A%A8%E6%80%81%E5%BE%BD%E7%AB%A0%E8%AE%BF%E9%97%AE%E3%80%82
docker exec -it webtop /bin/bash
docker logs -f webtop
docker inspect -f '{{ index .Config.Labels "build_version" }}' webtop
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/webtop:latest
我们的大多数镜像是静态的、版本化的,需要更新镜像并重新创建容器才能更新内部的应用程序。除某些例外情况(在相关readme.md中注明),我们不推荐或支持在容器内更新应用程序。请参考上方的应用程序设置部分,了解是否推荐对此镜像进行应用内更新。
以下是更新容器的说明:
docker-compose pull
docker-compose pull webtop
docker-compose up -d
docker-compose up -d webtop
docker image prune
docker pull lscr.io/linuxserver/webtop:latest
docker stop webtop
docker rm webtop
/config 文件夹和设置将被保留)docker image prune
[!TIP] 我们推荐使用 Diun 进行更新通知。不推荐或支持其他自动无人值守更新容器的工具。
如果您出于开发目的或自定义逻辑需要对这些镜像进行本地修改:
git clone https://github.com/linuxserver/docker-webtop.git
cd docker-webtop
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/webtop:latest .
可以使用 lscr.io/linuxserver/qemu-static 在x86_64硬件上构建ARM变体,反之亦然:
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
注册后,您可以使用 -f Dockerfile.aarch64 指定要使用的Dockerfile。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务