WinApps 如何用 docker compose 创建 Windows 11 虚拟机修改 compose.yaml 的内存/CPU/磁盘并经 VNC 完成安装【免费下载链接】winappsRun Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard fork of https://github.com/Fmstrat/winapps/项目地址: https://gitcode.com/GitHub_Trending/wina/winapps要在 Linux 桌面里运行 Microsoft Office、Adobe 这类 Windows 软件WinApps 的第一步是在宿主机上有一台可用的 Windows 虚拟机。项目文档推荐使用Docker或Podman作为后端因为这两种方式能自动化整个 Windows 安装流程省去手动配置虚拟机。本文按推荐的 Docker 路径操作修改仓库根目录模板compose.yaml中的RAM_SIZE、CPU_CORES、DISK_SIZE用docker compose启动容器再通过http://127.0.0.1:8006的 VNC Web 界面完成 Windows 11 的安装。前提条件GNU/Linux 系统且可用 KVM。文档明确说明以Docker/Podman为后端运行 Windows 虚拟机只在 GNU/Linux 上可行因为需要 KVM 这类内核接口才能达到可接受的性能Linux 内核版本越新虚拟机性能通常越好。compose.yaml模板已通过devices声明挂载/dev/kvm和/dev/net/tun所以宿主机必须已启用 KVM。安装 Docker Engine。文档指向 Docker 官方安装指南见 docs/docker.md安装命令在setup.sh检查docker命令是否存在缺失时会报MISSING DEPENDENCIES。iptables 内核模块已加载。主机文件夹共享${HOME}挂载进 Windows依赖 iptables。文档给出的检查与修复命令# 两条命令的输出都应非空 lsmod | grep ip_tables lsmod | grep iptable_nat若输出为空文档给出的修复方式是写入模块加载配置后重启需要 sudo会修改/etc/modules-load.d/并重启系统echo -e ip_tables\niptable_nat | sudo tee /etc/modules-load.d/iptables.confWindows 版本限制。WinApps 不官方支持 Windows 10 之前的版本。若你打算改装 Windows 10文档要求使用 Professional、Enterprise 或 Server 版Home 版不可行RDP 应用不支持。compose.yaml模板默认VERSION: 11即本文的 Windows 11 路径。拿到仓库文件。模板compose.yaml位于仓库根目录文档中的命令假设仓库目录名为winapps因此先克隆仓库备用。修改 compose.yaml内存、CPU、磁盘与 Windows 账户安装 Windows 之前编辑仓库根目录的 compose.yaml。文档明确说明安装前可以修改分配给虚拟机的 RAM 和 CPU 核数同时文件中的DISK_SIZE注释标明它是主硬盘大小。关键环境变量如下默认值均取自模板环境变量模板默认值用途VERSION11要安装的 Windows 版本本文使用 Windows 11RAM_SIZE4G分配给 Windows 虚拟机的内存CPU_CORES4分配给 Windows 虚拟机的 CPU 核数DISK_SIZE64G主硬盘大小DISK2_SIZE注释状态取消注释可为虚拟机增加第二块硬盘同时需取消volumes中对应挂载行USERNAMEMyWindowsUserWindows 用户名文档建议从一开始就在compose.yaml里定好避免后续修改PASSWORDMyWindowsPassword该 Windows 用户的密码HOME${HOME}Linux 用户主目录挂载进 Windows文件中与本次任务相关的其余配置保持模板原样即可但需要理解它们的作用image: ghcr.io/dockur/windows:latest虚拟机镜像。更多配置选项的完整说明见compose.yaml首行注释指向的dockur/windows项目文档文件内已有链接。端口映射127.0.0.1:8006:8006是 VNC Web 界面127.0.0.1:3389:3389tcp 与 udp是 RDP。两者都只绑定在127.0.0.1只能从宿主机本机访问。卷data挂载到/storage作为 Windows 的 C 盘${HOME}挂载到/shared在 Windows 里表现为\\host.lan\Data./oem挂载到/oem启用安装后自动执行oem/install.bat应用 oem/RDPApps.reg 中的注册表修改——从 oem/install.bat 可以看到它还会开启 Remote Desktop 防火墙规则这正是安装完成后 RDP 可用的原因。devices/dev/kvm启用 KVM/dev/net/tun启用 tuntap。restart: on-failure容器异常退出时自动重启stop_grace_period: 120s关机时等待 120 秒再发送 SIGTERM。如果你的发行版仓库里没有需要的配置项可以改用自定义 ISO取消volumes中media.iso挂载行的注释并把其中的/path/to/windows/install/media.iso替换成你实际的 ISO 路径文档注明指定自定义 ISO 后VERSION如tiny11会被忽略。启动容器安装 Windows在克隆好的仓库目录里执行文档给出的命令cd winapps docker compose --file ./compose.yaml up该命令在前台运行并输出容器日志。启动完成后在浏览器中打开http://127.0.0.1:8006即可通过 VNC 连接访问 Windows 虚拟机按界面提示完成 Windows 设置。设置过程中使用的用户名和密码就是你在compose.yaml里预先写入的USERNAME和PASSWORD——这也是文档建议一开始就改好它们的原因。Windows 安装结束后容器会自动执行挂载自./oem的安装后脚本无需额外操作。验证 Windows 安装成功文档给出的确认路径分两层VNC 界面可达且安装流程完成docker compose up持续运行的同时http://127.0.0.1:8006能打开并完成设置流程说明容器、KVM 与 VNC Web 服务都正常工作。RDP 能连进 Windows 桌面。这是 README.md Step 4 记录的验证方式。前提是已安装依赖README Step 2以 Debian/Ubuntu 为例sudo apt install -y curl dialog freerdp3-x11 git iproute2 libnotify-bin netcat-openbsd然后执行 FreeRDP 测试/u:、/p:换成你compose.yaml里的用户名密码文档示例如下命令名可能是xfreerdp或xfreerdp3取决于系统xfreerdp3 /u:MyWindowsUser /p:MyWindowsPassword /v:127.0.0.1:3389 /cert:tofu终端若提示证书确认选择永久接受。README 的成功判定是Windows 桌面出现在 FreeRDP 窗口中说明配置成功且正确的 RDP TLS 证书已登记到 Linux 主机此时断开会话即可。如果看到的是证书不匹配警告文档示例输出中的WARNING: CERTIFICATE NAME MISMATCH!/WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!说明旧证书阻断了连接。证书存放在~/.config/freerdp/server/命名格式为Windows-VM-IPv4-Address_RDP-Port.pem本机场景即127.0.0.1_3389.pem。只删除与本 Windows 虚拟机相关的那个证书如果 FreeRDP 还有其他用途务必确认然后重试连接首次 RDP 连接会自动创建新证书。日常操作虚拟机与应用配置变更初始安装完成后文档中的日常操作统一使用~/.config/winapps/compose.yaml这个路径docker compose --file ~/.config/winapps/compose.yaml start # 开机 docker compose --file ~/.config/winapps/compose.yaml pause # 暂停 docker compose --file ~/.config/winapps/compose.yaml unpause # 恢复 docker compose --file ~/.config/winapps/compose.yaml restart # 重启 docker compose --file ~/.config/winapps/compose.yaml stop # 优雅关机 docker compose --file ~/.config/winapps/compose.yaml kill # 强制关机其中kill是强制断电仅在无法正常关机时使用。修改 compose.yaml 后再应用文档说明对compose.yaml的任何修改包括再次调整内存、CPU、磁盘都要求容器删除后重建且这不会影响已有数据# 停止并删除现有容器 docker compose --file ~/.config/winapps/compose.yaml down # 删除现有 FreeRDP 证书如需要。 # 首次 RDP 连接时会自动生成新证书若配置过自定义 RDP_PORT请把 3389 换成该端口 rm ~/.config/freerdp/server/127.0.0.1_3389.pem # 用更新后的配置重建容器。需要后台运行就在末尾加 -d docker compose --file ~/.config/winapps/compose.yaml uprm一行只在证书导致连接问题时执行它删除的是 Linux 端保存的 RDP 证书文件不涉及 Windows 数据。重置一切、从头开始文档给出的重置命令在仓库目录执行docker compose down --rmiall --volumes用于撤销所有修改、从零开始。注意它带--rmiall --volumes会删除该项目的全部镜像与卷data卷里的 Windows 系统数据将一并丢失仅在你确认要彻底重来时执行。限制与下一步VNC8006与 RDP3389端口在模板中只映射到127.0.0.1安装界面只能从宿主机本机浏览器打开。模板注释里保留了把 RDP 暴露到局域网的改法取消 3389 端口行注释但会扩大暴露面按需使用。如果后续改了宿主机侧的 RDP 端口要同步修改winapps.conf中的RDP_PORT两者必须一致README 中winapps.conf注释有说明。虚拟机只是 WinApps 的第一步。按 README.md 的后续步骤Step 3 创建~/.config/winapps/winapps.conf其中RDP_USER/RDP_PASS必须对应你在 Windows 设置中创建的完整用户账户PIN 不可用于 RDPWAFLAVOR默认docker、RDP_IP默认127.0.0.1Step 4 用 FreeRDP 测试连接即上文的验证方式Step 5 运行 WinApps 安装器扫描 Windows 中的应用并创建 Linux 桌面快捷方式命令见 README Step 5。如果你已有现成的 Windows 虚拟机或服务器想接入 WinApps需要按 docs/libvirt.md 的 “Final Configuration Steps” 完成最终配置。【免费下载链接】winappsRun Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard fork of https://github.com/Fmstrat/winapps/项目地址: https://gitcode.com/GitHub_Trending/wina/winapps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考