在Docker中运行Windows系统(把 Windows 装进 Docker 容器里)

0    315    1

Tags:

👉 本文共约6760个字,系统预计阅读时间或需26分钟。

简介

万物皆可 Docker!!!

在 Docker 里安装 Windows系统,然后通过浏览器或mstsc远程访问这台套娃 Windows 系统,可以开启无限套娃模式。

今天为大家带来一款创新的开源工具:dockur/windows,基于 noVNC 和 QEMU 实现,模拟多种不同的硬件平台,为用户提供一个隔离的环境来运行不同的应用程序和操作系统。允许用户通过 Web 浏览器交互使用 Windows。

dockur/windows 可以让你在 Docker 容器中运行 Windows,全程自动安装 Windows,无需复杂的配置。

dockur/windows 提供了DHCP、自定义IP地址、磁盘映射、USB映射、KVM支持等能力。利用 KVM(Kernel-based Virtual Machine)来加速 Windows 的运行。

GitHub:https://github.com/dockur/windows

镜像:https://hub.docker.com/r/dockurr/windows

该项目刚发布半年,已在 GitHub 上获得了 1.6万 stars,

这个镜像主要依赖了几项技术:

  • qemus/qemu-docker,在容器中使用 QEMU,能够提供接近本机速度的虚拟机的网络、IO 速度等。
  • christgau/wsdd,让容器中的 Windows 能够出现在局域网中的其他设备的共享设备中。(Windows 10 的 1511 版本后,默认开始禁用 SMBv1,NetBIOS 设备发现功能失效,导致其他设备不能对其进行服务发现)。
  • qemus/virtiso,精简到 27MB 的 KVM/QEMU Virtio 驱动程序,能够让 Windows 在 Docker 环境中正常使用。
  • krallin/tini,正确启动 Docker 中 QEMU,以及确保进程异常能够被正确处理,或正确的终止容器进程。

如果要安装 ARM64 版本的 Windows,可以使用另一个开源项目:dokur/windows-arm,项目地址:https://github.com/dockur/windows-arm

🎨️ 特色

  • 开箱即用,无需复杂配置
  • 支持自定义 CPU/RAM 的数量、磁盘大小
  • 为容器分配单独的 IP 地址
  • 内置 ISO下载器,自动下载 Windows 版本的 ISO 文件
  • 支持Win7/Win8/Win10/Win11/tiny10等版本
  • 支持使用 Linux KVM 为 Windows 容器提供硬件虚拟化的加速
  • 与主机共享文件、安装自定义镜像
  • 提供 DHCP、自定义 IP 地址、磁盘映射、USB映射等功能
  • 通过 Web 浏览器实时查看和控制 Windows 容器的桌面,无需安装额外的软件或插件
  • 代码完全开源,不分发任何受版权保护的材料,无任何版权问题,合法合规

使用说明

1、需要有docker环境

2、Linux的宿主机需要支持虚拟化技术,查询方法如下,参考:https://www.dbaup.com/ruhepanduancpushifouzhichiyingjianxunihua.html

3、docker镜像:

选择Windows操作系统

默认情况下,将会安装Windows 11。但您可以在compose文件中添加VERSION环境变量,以便指定要下载的其他Windows版本。

可选的值有:

ValueVersionSize
win11Windows 11 Pro6.4 GB
win11eWindows 11 Enterprise5.8 GB
win10Windows 10 Pro5.7 GB
ltsc10Windows 10 LTSC4.6 GB
win10eWindows 10 Enterprise5.2 GB
win8Windows 8.1 Pro4.0 GB
win8eWindows 8.1 Enterprise3.7 GB
win7Windows 7 Enterprise3.0 GB
vistaWindows Vista Enterprise3.0 GB
winxpWindows XP Professional0.6 GB
2022Windows Server 20224.7 GB
2019Windows Server 20195.3 GB
2016Windows Server 20166.5 GB
2012Windows Server 20124.3 GB
2008Windows Server 20083.0 GB
core11Tiny 11 Core2.1 GB
tiny11Tiny 113.8 GB
tiny10Tiny 103.6 GB

To install ARM64 versions of Windows use dockur/windows-arm.

为容器分配独立的 IP 地址

默认情况下,Docker 会共享宿主机的 IP,如果我们想要让容器拥有独立的 IP 地址,需要先创建一个 macvlan 网络:

创建完网卡后,调整上面使用的容器配置,根据自己的需求指定容器 IP 即可。

此方法的一个额外好处是,您不再需要执行任何端口映射,因为所有端口都将默认暴露。重要提示由于macvlan的设计不允许两者之间的通信,因此这个IP地址从Docker主机上将无法访问。如果这是一个问题,您需要创建第二个macvlan 网络作为变通方法。

如何使Windows从我的路由器获取IP地址?

在为容器配置macvlan后,Windows可以通过向路由器请求IP地址,就像一台真实的PC一样,成为家庭网络的一部分。为了启用这种模式,需在您的compose文件中添加以下行:

在这种模式下,容器和Windows系统将各自拥有独立的IP地址。

使用多块磁盘

使用一整块磁盘

如果你的主机上有多块磁盘,或者想将某一块磁盘完整的分配给 Windows,可以采用下面的方法,其中 DEVICE 将作为你的主磁盘:

在 Docker 中的 Windows 使用 USB 设备

我们首先需要使用 lsusb 来获取 USB 设备的 VendorIDProductID ,然后将这些信息添加到配置中:

相关参数

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复