linuxserver/rdesktop!linuxserver.io
LinuxServer.io团队提供的此容器具有以下特点:
Rdesktop - 包含多种流行Ubuntu桌面环境的容器,可通过RDP访问。
!rdesktop
我们利用docker manifest实现多平台支持。只需拉取lscr.io/linuxserver/rdesktop:ubuntu-xfce即可获取适合您架构的正确镜像,也可通过标签拉取特定架构的镜像。
支持的架构:
| 架构 | 可用 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64-<version tag> |
| arm64 | ✅ | arm64v8-<version tag> |
此镜像提供多种版本,可通过标签获取。使用不稳定或开发标签时请谨慎。
| 标签 | 可用 | 描述 |
|---|---|---|
| latest | ❌ | 不可用 |
| ubuntu-xfce | ✅ | XFCE桌面环境(Ubuntu) |
| ubuntu-kde | ✅ | KDE桌面环境(Ubuntu) |
| ubuntu-mate | ✅ | MATE桌面环境(Ubuntu) |
| ubuntu-i3 | ✅ | i3窗口管理器(Ubuntu) |
| ubuntu-openbox | ✅ | Openbox窗口管理器(Ubuntu) |
| ubuntu-icewm | ✅ | IceWM窗口管理器(Ubuntu) |
默认用户名和密码:abc/abc
与我们其他容器不同,这些桌面环境不支持通过Docker升级。升级现有容器时,主目录会保留,但系统级安装的任何软件都会丢失。若要保持软件包最新,请使用Ubuntu的apt、Alpine的apk、Fedora的dnf或Arch的pacman程序
您需要远程桌面客户端访问此容器(***列表),默认监听3389端口,可在主机端更改端口映射(如3390:3389)。
登录容器后,首先应使用passwd命令修改abc用户的密码。
现代GUI桌面应用(包括部分终端)在最新Docker中存在系统调用兼容性问题,可使用--security-opt seccomp=unconfined参数允许这些系统调用,或尝试podman(其代码库已更新以支持这些调用)
若忘记密码,可通过root身份进入容器重置:
bashdocker exec -it rdesktop passwd abc
默认情况下,所有逻辑均针对abc用户配置,建议仅使用该用户。若需添加新用户,其主目录中必须存在可执行的startwm.sh脚本。
所有容器均配置为无密码sudo,我们未对容器进行安全加固,不建议将其端口暴露到公网。
所有应用设置通过环境变量传递:
| 变量 | 描述 |
|---|---|
| LC_ALL | 设置容器语言,如fr_FR.UTF-8(法语)、ar_AE.UTF-8(阿拉伯语) |
| NO_DECOR | 若设置,应用将无窗口边框(可通过Ctrl+Shift+d启用/禁用边框) |
| NO_FULL | 使用openbox时不自动全屏显示应用 |
环境变量LC_ALL可用于以非英语启动镜像,例如设置为LC_ALL=fr_FR.UTF-8可启动法语桌面会话。部分语言(如中文、日文、韩文)需要CJK字体支持,默认仅确保拉丁字符字体存在。可通过启动时的mod安装字体。
例如,在Debian系统中安装CJK字体:
-e DOCKER_MODS=linuxserver/mods:universal-package-install -e INSTALL_PACKAGES=fonts-noto-cjk -e LC_ALL=zh_CN.UTF-8
所有镜像包含proot-apps,允许将便携应用安装到用户$HOME目录的持久存储中。这些应用及其设置在基础容器升级后仍会保留,并可挂载到不同版本的rdesktop容器中使用(如将Alpine容器的/config目录挂载到Ubuntu容器,通过proot-apps install安装的应用和设置将保留)。
LinuxServer.io支持的应用列表见此处。
对于需要加速的应用或游戏,可将渲染设备挂载到容器中供应用使用:
--device /dev/dri:/dev/dri
此功能仅支持开源GPU驱动:
| 驱动 | 描述 |
|---|---|
| Intel | Intel集成显卡的i965和i915驱动 |
| AMD | AMD独立显卡或APU的AMDGPU、Radeon和ATI驱动 |
| NVIDIA | 仅nouveau2驱动,闭源NVIDIA驱动缺乏DRI3支持 |
通过Zink实现OpenGL支持以启用Nvidia加速,需使用以下运行参数:
| 参数 | 描述 |
|---|---|
| --gpus all | 通常传递系统中的一个Nvidia GPU(可筛选特定GPU) |
| --runtime nvidia | 指定Nvidia运行时,从主机挂载驱动和工具 |
Compose配置需将nvidia设为默认运行时:
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default sudo service docker restart
Compose中分配GPU:
yamlservices: myimage: image: myname/myimage:mytag deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [compute,video,graphics,utility]
以下提供docker-compose和docker cli的使用示例(非可选参数必须提供值)。
yaml--- services: rdesktop: image: lscr.io/linuxserver/rdesktop:ubuntu-xfce container_name: rdesktop security_opt: - seccomp:unconfined # 可选,解决GUI兼容性问题 environment: - PUID=1000 # 用户ID - PGID=1000 # 组ID - TZ=Etc/UTC # 时区,如Asia/Shanghai volumes: - /var/run/docker.sock:/var/run/docker.sock # 可选,如需在容器内使用Docker - /path/to/rdesktop/data:/config # 可选,abc用户主目录(持久化数据) ports: - 3389:3389 # RDP端口映射 devices: - /dev/dri:/dev/dri # 可选,添加GL支持(仅Linux主机) shm_size: "1gb" # 可选,设置共享内存大小(防止浏览器崩溃) restart: unless-stopped
bashdocker run -d \ --name=rdesktop \ --security-opt seccomp=unconfined `# 可选` \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -p 3389:3389 \ -v /var/run/docker.sock:/var/run/docker.sock `# 可选` \ -v /path/to/rdesktop/data:/config `# 可选` \ --device /dev/dri:/dev/dri `# 可选` \ --shm-size="1gb" `# 可选` \ --restart unless-stopped \ lscr.io/linuxserver/rdesktop:ubuntu-xfce
容器通过运行时参数配置,格式为<外部>:<内部>。例如-p 8080:80表示将容器内80端口映射到主机8080端口。
| 参数 | 功能 |
|---|---|
-p 3389:3389 | RDP访问端口 |
-e PUID=1000 | 用户ID(详见下文说明) |
-e PGID=1000 | 组ID(详见下文说明) |
-e TZ=Etc/UTC | 时区,参考时区列表 |
-v /var/run/docker.sock | 主机Docker socket(如需在容器内使用Docker) |
-v /config | abc用户的主目录 |
--device /dev/dri | 添加GL支持(仅Linux主机) |
--shm-size= | 设置共享内存大小(默认1GB,防止现代浏览器崩溃) |
--security-opt seccomp=unconfined | Docker引擎专用,解决现代GUI应用的系统调用问题 |
可通过FILE__前缀从文件设置环境变量:
bash-e FILE__MYVAR=/run/secrets/mysecretvariable
此命令会将MYVAR环境变量设置为/run/secrets/mysecretvariable文件的内容。
所有镜像支持通过-e UMASK=022覆盖默认umask设置。注意umask是权限掩码(减法)而非直接设置权限,详情参考umask说明。
使用卷(-v参数)时,主机与容器可能存在权限问题。通过指定PUID(用户ID)和PGID(组ID)可避免此问题。
确保主机卷目录归属于指定用户,权限问题将自动解决。
使用id your_user命令获取当前用户的PUID和PGID:
bashid your_user
示例输出:
textuid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
我们提供多种Docker Mods以扩展容器功能。上方动态徽章链接至该镜像专用mods和适用于所有镜像的通用mods。
容器运行时进入shell:
bashdocker exec -it rdesktop /bin/bash
实时查看容器日志:
bashdocker logs -f rdesktop
容器版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' rdesktop
镜像版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rdesktop:ubuntu-xfce
大多数镜像为静态版本,需更新镜像并重建容器以更新应用(除非应用设置部分另有说明)。
更新镜像:
所有镜像:
bashdocker-compose pull
单个镜像:
bashdocker-compose pull rdesktop
更新容器:
所有容器:
bashdocker-compose up -d
单个容器:
bashdocker-compose up -d rdesktop
清理旧镜像:
bashdocker image prune
更新镜像:
bashdocker pull lscr.io/linuxserver/rdesktop:ubuntu-xfce
停止运行中的容器:
bashdocker stop rdesktop
删除容器:
bashdocker rm rdesktop
使用相同参数重建容器(若卷映射正确,/config目录和设置将保留)
清理旧镜像:
bashdocker image prune
[!TIP] 推荐使用Diun接收更新通知。不建议使用自动更新容器的工具。
如需本地修改镜像(开发或自定义):
bashgit clone [***] cd docker-rdesktop docker build \ --no-cache \ --pull \ -t lscr.io/linuxserver/rdesktop:ubuntu-xfce .
可使用lscr.io/linuxserver/qemu-static在x86_64硬件上构建ARM变体,反之亦然:
bashdocker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
注册后,可使用-f Dockerfile.aarch64指定ARM架构的Dockerfile。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务