Docker 中运行一个干净的 Windows 系统

今天发现Docker/Windows 镜像。

安装

这个镜像可以让你在 Docker 中运行一个干净的 Windows 系统。 可以让你无限套娃了。
通过 Docker Compose安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
windows:
image: dockurr/windows
container_name: windows
environment:
VERSION: "win11"
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
volumes:
- /e/Docker/APP/Windows/data:/storage
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period: 2m
restart: on-failure

也可以通过 Docker CLI:

1
docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows

使用

  1. 启动容器并使用 Web 浏览器连接到端口 8006
    Snipaste_2024-04-24_15-46-49.png
  2. 然后就开始安装windows11(默认)
  3. 安装完后就可以使用。
    Snipaste_2024-04-24_16-25-25.png

选择 Windows 版本

默认情况下,将安装 Windows 11。但是,可以将 VERSION 环境变量添加到撰写文件中,以便指定要下载的备用 Windows 版本:

1
2
environment:
VERSION: "win11"

支持的版本还很多:

Value价 Description描 Source Transfer Size
win11 Windows 11 Pro Microsoft Fast 6.4 GB
win10 Windows 10 Pro Microsoft Fast 5.8 GB
ltsc10 Windows 10 LTSC Microsoft Fast 4.6 GB
win81 Windows 8.1 Pro Microsoft Fast 4.2 GB
win7 Windows 7 SP1 Bob Pony Medium 3.0 GB
vista Windows Vista SP2 Bob Pony Medium 3.6 GB
winxp Windows XP SP3 Bob Pony Medium 0.6 GB
2022 Windows Server 2022 Microsoft Fast 4.7 GB
2019 Windows Server 2019 Microsoft Fast 5.3 GB
2016 Windows Server 2016 Microsoft Fast 6.5 GB
2012 Windows Server 2012 R2 Microsoft Fast 4.3 GB
2008 Windows Server 2008 R2 Microsoft Fast 3.0 GB
core11 Tiny 11 Core Archive.org Slow 2.1 GB
tiny11 Tiny 11 Archive.org Slow 3.8 GB
tiny10 Tiny 10 Archive.org Slow 3.6 GB

使用 RDP 进行连接

网络查看器主要用于安装过程中,因为它的图像质量很低,并且没有音频或剪贴板。
因此,为了获得更好的体验,您可以使用任何 Microsoft 远程桌面客户端连接到容器的 IP,使用用户名 docker 并将密码留空。
Snipaste_2024-04-24_16-26-23.png

更改存储位置

要更改存储位置,请在 compose 文件中包含以下绑定挂载:

1
2
volumes:
- /var/win:/storage

将示例路径 /var/win 替换为所需的存储文件夹。

与主机共享文件

打开文件资源管理器,然后单击“网络”部分,您将看到一台名为host.lan的计算机,双击它,它将显示一个名为Data的文件夹。
在此文件夹中,您可以访问放置在主机/storage/shared(见上文)中的任何文件。

为容器分配单个 IP 地址

默认情况下,容器使用桥接网络,该网络与主机共享 IP 地址。
如果要为容器分配单个 IP 地址,可以按如下方式创建 macvlan 网络:

1
2
3
4
5
docker network create -d macvlan \
--subnet=192.168.0.0/24 \
--gateway=192.168.0.1 \
--ip-range=192.168.0.100/28 \
-o parent=eth0 vlan

请务必修改这些值以匹配您的本地子网。
创建网络后,将撰写文件更改为如下所示:

1
2
3
4
5
6
7
8
9
10
services:
windows:
container_name: windows
..<snip>..
networks:
vlan:
ipv4_address: 192.168.0.100
networks:
vlan:
external: true

从我的路由器获取 IP 地址

配置 macvlan 容器后(见上文),Windows 可以通过向路由器请求 IP 来成为家庭网络的一部分,就像真正的 PC 一样。

要启用此模式,请将以下行添加到您的撰写文件中:

1
2
3
4
5
6
environment:
DHCP: "Y"
devices:
- /dev/vhost-net
device_cgroup_rules:
- 'c *:* rwm'

其余设置可以去github 上查看。

总结

终于可以有个干净的windows系统,算是可以摆脱VMware了。