我先记第一次安装时最常用的命令:

docker run -d \
  --name windows \
  --restart always \
  --device=/dev/kvm \
  --device=/dev/net/tun \
  --cap-add NET_ADMIN \
  -p 8006:8006 \
  -p 3389:3389/tcp \
  -p 3389:3389/udp \
  -v /opt/windows:/storage \
  -v /opt/windows/windows.iso:/boot.iso \
  -e MANUAL=Y \
  -e RAM_SIZE=4G \
  -e CPU_CORES=24 \
  -e DISK_TYPE=nvme \
  -e DISK_SIZE=256G \
  dockurr/windows

这个命令适合第一次装系统的时候用,因为它保留了网页控制台,远程桌面没配好之前,至少还能从浏览器进去看安装过程。我自己最常改的环境变量基本就是下面这些:

-v /opt/windows/windows.iso:/boot.iso

挂载/opt/windows/windows.iso为系统镜像,如果没有挂载的话记得指定一下系统版本

-e MANUAL=Y

表示手动安装。第一次部署时我一般都会先保留手动

-e RAM_SIZE=4G

虚拟机内存大小,默认是4G

-e CPU_CORES=24

虚拟机核心数,默认是2

-e DISK_TYPE=nvme

虚拟磁盘类型,默认是scsi,但进到系统中硬盘会识别为可插拔,提示安全删除硬件和弹出媒体/Safely Remove Hardware and Eject Media,我一般会改为nvme,常见的选项有:

ide
sata
nvme
usb
scsi
blk
auto
none

如果更看重性能,一般会优先在nvme、scsi、blk里选。 如果更看重兼容性,就选sata

-e DISK_SIZE=256G

虚拟磁盘大小,默认是64G

虚拟机稳定以后,我一般会改用第二个命令:

docker run -d \
  --name windows \
  --restart always \
  --device=/dev/kvm \
  --device=/dev/net/tun \
  --cap-add NET_ADMIN \
  -p 3389:3389/tcp \
  -p 3389:3389/udp \
  -v /opt/windows:/storage \
  -v /opt/windows/windows.iso:/boot.iso \
  -e RAM_SIZE=4G \
  -e CPU_CORES=24 \
  -e DISK_TYPE=nvme \
  -e DISK_SIZE=256G \
  -e DISPLAY=none \
  -e WEB=N \
  dockurr/windows

这个就是无头模式,只保留RDP,不用再开网页控制台。系统装好、远程桌面正常以后,我更推荐这个。


Windows 安装相关变量

变量默认值作用可选值
APPWindows产品名任意字符串
SUPPORTdockur/windows支持链接任意URL
PLATFORMx64平台标识x64
VERSION11安装版本11 10 ISO URL等
LANGUAGEen安装语言语言代码
REGION空区域设置en-US fr-FR等
KEYBOARD空键盘布局en-US de-DE等
USERNAMEDocker用户名Windows用户名
PASSWORDadmin安装用户密码字符串
KEY空产品密钥密钥
EDITION空服务器安装版本DATACENTER STANDARD等
MANUAL关是否手动安装Y/N
VERIFY关下载后校验哈希Y/N
WIDTH1280安装阶段分辨率宽正整数
HEIGHT720安装阶段分辨率高正整数
REMOVE开安装完成删除ISOY/N
DETECTED空内部检测版本标记内部值,不建议改
MIDO开启用Mido下载链路Y/N
ESD开启用ESD下载链路Y/N
UNPACK关解包内层ISOY/N
SAMBAY启用共享目录Y/N
SAMBA_DEBUGNSamba调试日志Y/N
SAMBA_LEVEL1Samba日志级别数字字符串
SAMBA_INTERFACE空绑定接口或IP接口名或IP
QEMU_TIMEOUT110关机等待超时秒数正整数

启动、CPU 和虚拟机核心变量

变量默认值作用可选值
BOOT空启动镜像选择关键字 URL 本地映射
BOOT_MODEwindows启动固件模式uefi secure legacy等
BOOT_INDEX9启动介质数字
BIOS空自定义BIOS容器内路径
LOGO开注入UEFI LOGOY/N
KVMY硬件加速Y/N
MACHINEq35QEMU machine类型q35 pc等
CPU_CORES2vCPU 数2 max half等
RAM_SIZE4G内存大小2G max half等
RAM_CHECKY自动降配内存Y/N
CPU_MODEL自动CPU型号QEMU model host等
CPU_FLAGS自动附加CPU特性QEMU参数
VMXNVMX开关Y/N
HPEToffmachine hpeton/off
VMPORToffmachine vmporton/off
UUID空VM UUIDUUID
TPMNswtpmY/N
SMMNSMMY/N
SERIALmon:stdio串口后端QEMU参数
SMP$CPU_CO...完整SMP拓扑QEMU参数
MONITORteln...monitor配置monitor参数
MON_PORT7100monitor端口端口号
ARGUMENTS空追加QEMU参数任意参数串
ARGS空内部兼容参数字符串
DEBUGN调试日志Y/N
TRACE关shell traceY/N

磁盘和存储变量

变量默认值作用可选值
STORAGE/storage持久化目录容器内路径
ALLOCATEN是否预分配磁盘Y/N
DISK_SIZE64G主盘大小64G max half等
DISK2_SIZE空第二块盘大小64G max half等
DISK3_SIZE空第三块盘大小64G max half等
DISK4_SIZE空第四块盘大小64G max half等
DISK5_SIZE空第五块盘大小64G max half等
DISK6_SIZE空第六块盘大小64G max half等
DISK_NAMEdata磁盘文件名前缀字符串
DEVICE空直通块设备 1块设备路径
DEVICE2空直通块设备 2块设备路径
DEVICE3空直通块设备 3块设备路径
DEVICE4空直通块设备 4块设备路径
DEVICE5空直通块设备 5块设备路径
DEVICE6空直通块设备 6块设备路径
DISK_FMTraw磁盘格式raw qcow2
DISK_TYPEscsi磁盘设备类型sata nvme scsi auto none等
MEDIA_TYPE自动光驱或安装介质设备类型sata nvme scsi auto none等
DISK_IOnativeAIO模式native threads io_uring
DISK_CACHEnone磁盘缓存策略none writeback等
DISK_DISCARDonTRIM透传on/off
DISK_ROTATION1旋转率整数
DISK_FLAGS空qcow2附加参数qemu-img参数

网络变量

变量默认值作用可选值
NETWORKY网络类型总开关N Y tap tun等
DHCPN让客体从路由器拿 IPY/N
ADAPTERvirtio-net-pci网卡型号e1000、rtl8139等
MAC自动生成MAC地址MAC地址
MTU自动探测MTUMTU
HOST_PORTS空保留或排除端口端口
USER_PORTS空转发端口端口
VM_NET_IP自动客体IPIPv4
VM_NET_DEV自动容器网卡名网卡名
VM_NET_TAPqemutap名字符串
VM_NET_MAC$MAC覆盖客体MACMAC
VM_NET_HOST$APP客体hostname字符串
VM_NET_BRIDGEdockerbridge 名字符串
VM_NET_MASK255.255.255.0子网掩码子网掩码
PASST/run/passtpasst路径文件路径
PASST_MTU空passt MTU整数
PASST_OPTS空passt参数参数串
PASST_DEBUG关passt日志Y/N
PASST_PID/var/ru...passt pid文件文件路径
DNSMASQ/usr/sbi...dnsmasq程序路径文件路径
DNSMASQ_OPTS空dnsmasq参数参数串
DNSMASQ_DEBUG关dnsmasq日志Y/N
DNSMASQ_CONF_DIR/etc/dn...dnsmasq目录路径
DNSMASQ_PID/var/ru...dnsmasq pid文件路径
DNSMASQ_DISABLE关禁用dnsmasqY/N

显示、Web 和 USB 变量

变量默认值作用可选值
DISPLAYweb显示模式web vnc disabled none等
VGAvirtio显卡类型如 virtio std cirrus
GPUNIntel GPU加速Y/N
RENDERNODE/dev/dr...GPU render node设备路径
VNC_PORT5900VNC>=5900
WEB_PORT8006Web UI端口号
WSD_PORT8004websocketd端口号
WSS_PORT5700noVNC websocket端口号
WEB开启用Web UIY/N
USERadmin用户名字符串
PASS空密码字符串
USBqemu-x...控制器或设备参数字符串 no