侧边栏壁纸
博主头像
是羊刀仙啊博主等级

闲不下来!

  • 累计撰写 92 篇文章
  • 累计创建 33 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

NAS一键部署Windows,Docker轻松实现

羊刀仙
2024-12-12 / 0 评论 / 0 点赞 / 15 阅读 / 7543 字
温馨提示:
本文最后更新于 2024-12-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

大家好,我是羊刀仙。

这次来介绍一个通过Docker部署Windows的开源项目,部署过程简单,体验也还不错。

文章内容:项目介绍,部署流程,部署报错解决,部署成功演示

对我来说该项目并没有实际使用场景,各位若有需求可以参考部署。

项目介绍

Dockur/windows 是一个开源项目,旨在通过 Docker 容器运行 Windows 系统。该项目主要利用 QEMU 和 KVM 等虚拟化技术,将 Windows 操作系统封装为容器,使其能够在支持虚拟化的环境中高效运行。它为开发者和用户提供了一种轻量级的方式,在容器化环境中部署和管理 Windows 系统,适合测试、开发或运行特定的 Windows 应用程序。

目前支持的版本:下列依次为 值 windows版本 大小

11 Windows 11 专业版 5.4 GB
11l Windows 11 LTSC 4.2 GB
11e Windows 11 企业版 5.8 GB
10 Windows 10 专业版 5.7 GB
10l Windows 10 LTSC 4.6 GB
10e Windows 10 企业版 5.2 GB
8e Windows 8.1 企业版 3.7 GB
7e Windows 7 企业版 3.0 GB
ve Windows Vista 企业版 3.0 GB
xp Windows XP 专业版 0.6 GB
2025 Windows Server 2025 5.0 GB
2022 Windows Server 2022 4.7 GB
2019 Windows 服务器 2019 5.3 GB
2016 Windows 服务器 2016 6.5 GB
2012 Windows 服务器 2012 4.3 GB
2008 Windows 服务器 2008 3.0 GB
2003 Windows 服务器 2003 0.6 GB

如果要安装 ARM64 版本的 Windows,请使用dockur/windows-arm

支持自定义ISO和手动安装,修改 CPU 或 RAM 配置,为容器分配单独的 IP 地址,从本地路由器获取 IP 地址,添加多个磁盘,磁盘和USB设备直通,这些都可以通过部署时通过修改代码来实现。

目前支持语言:🇦🇪阿拉伯语、🇧🇬保加利亚语、🇨🇳中文、🇭🇷克罗地亚语、🇨🇿捷克语、🇩🇰丹麦语、🇳🇱荷兰语、🇬🇧英语、🇪🇪爱沙尼亚语、🇫🇮芬兰语、🇫🇷法语、🇩🇪德语、🇬🇷希腊语、🇮🇱希伯来语、🇭🇺匈牙利语、🇮🇹意大利语、🇯🇵日语、🇰🇷韩语、🇱🇻拉脱维亚语、🇱🇹立陶宛语, 🇳🇴 挪威语、🇵🇱 波兰语、🇵🇹 葡萄牙语、🇷🇴 罗马尼亚语、🇷🇺 俄语、🇷🇸 塞尔维亚语、🇸🇰 斯洛伐克语、🇸🇮 斯洛文尼亚语、🇪🇸 西班牙语、🇸🇪 瑞典语、🇹🇭 泰语、🇹🇷 土耳其语和🇺🇦 乌克兰语。

部署流程

演示设备为威联通NAS TS-462C,Intel N5095处理器,四核四线程。

准备两个文件,分别用于系统安装及NAS主机文件共享。路径为/share/Container/win/share/winshare

截屏2024-12-11 15.20.58.png

为了让虚拟的windows加入家庭网络,先利用SSH工具连接NAS,输入命令创建 macvlan网络,网关设置为我本地的路由器地址 192.168.200.1

docker network create -d macvlan \
    --subnet=192.168.200.0/24 \ # 整个网段,与你的路由器配置一致
    --gateway=192.168.200.1 \
    --ip-range=192.168.200.200/29 \ # 可根据需求为容器分配IP范围
    -o parent=eth1 vlan # eth1 为你的主网卡,请根据实际情况替换

如果你不让其想加入本地局域网,请忽略这一部分。

创建完毕后返回web界面。

打开Container Station,创建新的应用程序。将以下代码根据个人情况修改后粘贴进框内并创建。

version: '3' # 最新版docker compose该行可删除
services:
  windows:
    image: dockurr/windows # 可选dockur/windows-arm
    container_name: windows
    environment:
      VERSION: "11" # 选择windows版本,11为win11专业版
      DISK_SIZE: "256G" # 可自定义系统硬盘大小
      RAM_SIZE: "4G" # 默认情况下最多允许使用 2 个 CPU 核心和 4 GB RAM 
      CPU_CORES: "2" # 若不需要调整,这两行可删除
      USERNAME: "bill" # 可自定义配置用户名
      PASSWORD: "gates" # 可自定义配置密码
      LANGUAGE: "Chinese" # 默认下载英文版windows,可选择修改
      DHCP: "Y" # 如果你不想加入本地局域网,删掉这一条
    volumes:
      - /share/Container/win:/storage # 存储位置
      - /share/winshare:/data # 与主机共享文件
    devices:
      - /dev/kvm
      - /dev/net/tun
      - /dev/vhost-net # 如果你不想加入本地局域网,删掉这一条
    device_cgroup_rules: # 如果你不想加入本地局域网,删掉这一部分
      - 'c *:* rwm'
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006 # 冒号左侧可改,为服务访问端口
      - 3389:3389/tcp
      - 3389:3389/udp
    networks: # 如果你不想加入本地局域网,删掉这一部分
      vlan:
        ipv4_address: 192.168.200.100 # 在上面的范围内指定一个IP
    stop_grace_period: 2m
networks: # 如果你不想加入本地局域网,删掉这一部分
  vlan:
    external: true

截屏2024-12-11 15.58.44.png

等待部署成功,后台会自动下载镜像并安装。访问地址为IPv4地址:8006否则为NAS_IP:8006

截屏2024-12-11 17.46.40.png

可能会出现的问题

这部分是我在部署过程中日志报错以及解决办法。

⚠️报错一

windows |
windows | ❯ Extracting Windows 11 bootdisk...
windows | ❯ Extracting Windows 11 environment...
windows | ❯ Extracting Windows 11 setup...
windows | ❯ Extracting Windows 11 image...
windows | ❯ Adding drivers to image...
windows | ❯ Adding win11x64.xml for automatic installation...
windows | ❯ Building Windows 11 image...
windows | ❯ Creating a 100G growable disk image in raw format...
windows | ❯ Booting Windows using QEMU v9.1.1...
windows | ❯ ERROR: qemu-system-x86_64: eVMCS version range [1..1] is not supported by kernel (supported: [0..0])
windows | qemu-system-x86_64: kvm_init_vcpu: kvm_arch_init_vcpu failed (0): Operation not supported

1️⃣ 启用嵌套虚拟化
确保主机的嵌套虚拟化功能已启用:

Intel CPU: 检查并启用嵌套虚拟化:

cat /sys/module/kvm_intel/parameters/nested

输出结果Y表示已启用。如果未启用,执行以下命令:

sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1

AMD CPU: 检查:

cat /sys/module/kvm_amd/parameters/nested

启用:

sudo modprobe -r kvm_amd
sudo modprobe kvm_amd nested=1

2️⃣ 检查内核版本和 KVM 模块
确保内核和 KVM 模块支持所需的虚拟化功能:

检查内核版本:

uname -r # 推荐使用较新的内核版本(如 5.15 或更高)

验证 KVM 模块是否已加载:

lsmod | grep kvm

3️⃣ 修改 QEMU 配置
如果嵌套虚拟化无法启用,可以尝试以下方法:

禁用 eVMCS 支持: 在运行 QEMU 时,添加以下参数:

-cpu host,-vmx # 这将禁用 eVMCS 功能,可能允许虚拟机启动。

使用 TCG 模式(无硬件加速): 如果 KVM 不支持,可尝试使用 TCG(全软件仿真):

-machine accel=tcg

⚠️报错二

创建应用“windows”时失败的原因是由于无法找到 /dev/kvm 设备。

error gathering device information while adding custom device "/dev/kvm": no such file or directory

表明在你的 NAS 上可能没有启用硬件虚拟化支持(KVM,Kernel-based Virtual Machine)。

1️⃣ 检查 /dev/kvm 是否存在
在 NAS 的终端中运行以下命令:

ls -l /dev/kvm

如果返回类似 No such file or directory,说明 KVM 模块未正确加载。

2️⃣ 加载 KVM 模块
尝试手动加载 KVM 模块:

sudo -i # 切换到超级模式
sudo modprobe kvm
sudo modprobe kvm-intel

3️⃣ 确认系统是否允许加载模块
某些 NAS 系统可能会限制用户加载内核模块。你可以检查系统的模块加载配置:

查看模块加载限制:

cat /proc/sys/kernel/modules_disabled

如果返回值是 1,说明模块加载被禁用。
如果被禁用,可以尝试启用(需要 root 权限):

echo 0 > /proc/sys/kernel/modules_disabled

演示部分

项目跑起来后,就可以web输入IP查看,坐等自动安装就行。

截屏2024-12-11 13.25.01.png

安装完毕后进入桌面。

截屏2024-12-11 13.38.04.png

可以看到部署前创建的本地账户。

截屏2024-12-11 13.38.36.png

资源管理器内查看,各项配置资源都正常。

截屏2024-12-11 13.41.20.png

与NAS互通的空间可在网络中查看。

截屏2024-12-11 13.46.51.png

其他事项

WEB UI主要用于安装期间使用,因为它的图像质量较低,并且没有音频或粘贴板。我们按照上文的部署方式安装完毕后,可以通过各类桌面工具连接使用(win默认的远程端口为3368)。

截屏2024-12-12 09.32.45.png

截屏2024-12-11 18.25.02.png

其他更多问题请至原项目链接中查看。

截屏2024-12-11 16.58.20.png

最后

如果觉得本篇内容对你有所帮助,可以三连支持下!后续我还会持续分享各类教程以及有趣好玩的项目,也欢迎大家评论区留言交流。

感谢观看,本文完~

0

评论区