Docker 容器內的 Windows。
透過 Docker 撰寫:
services :
windows :
image : dockurr/windows
container_name : windows
environment :
VERSION : " 11 "
devices :
- /dev/kvm
cap_add :
- NET_ADMIN
ports :
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period : 2m
透過 Docker CLI:
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
通過庫伯內特斯:
kubectl apply -f kubernetes.yml
很簡單!這些是步驟:
啟動容器並使用 Web 瀏覽器連線至連接埠 8006。
坐下來放鬆,等待奇蹟發生,整個安裝過程將全自動進行。
看到桌面後,您的 Windows 安裝就可以使用了。
享受你的全新機器,別忘了為這個倉庫加註星標!
預設情況下,將安裝 Windows 11。但是您可以將VERSION
環境變數新增至您的 compose 檔案中,以便指定要下載的替代 Windows 版本:
environment :
VERSION : " 11 "
從以下值中選擇:
價值 | 版本 | 尺寸 |
---|---|---|
11 | Windows 11 專業版 | 5.4GB |
11l | Windows 11 長期支援中心 | 4.2GB |
11e | Windows 11 企業版 | 5.8GB |
10 | Windows 10 專業版 | 5.7GB |
10l | Windows 10 長期支援中心 | 4.6GB |
10e | Windows 10 企業版 | 5.2GB |
8 | Windows 8.1 專業版 | 4.0GB |
8e | Windows 8.1 企業版 | 3.7GB |
7e | Windows 7 企業版 | 3.0GB |
ve | Windows Vista 企業版 | 3.0GB |
xp | Windows XP 專業版 | 0.6GB |
2025 | Windows Server 2025 | 5.0GB |
2022 | Windows Server 2022 | 4.7GB |
2019 | Windows 伺服器 2019 | 5.3GB |
2016 | Windows 伺服器 2016 | 6.5GB |
2012 | Windows 伺服器 2012 | 4.3GB |
2008 | Windows Server 2008 | 3.0GB |
2003 | Windows Server 2003 | 0.6GB |
提示
若要安裝 ARM64 版本的 Windows,請使用 dokur/windows-arm。
若要變更儲存位置,請在您的撰寫檔案中包含以下綁定安裝:
volumes :
- /var/win:/storage
將範例路徑/var/win
替換為所需的儲存資料夾。
若要擴充 64 GB 的預設大小,請將DISK_SIZE
設定新增至您的撰寫檔案並將其設定為您的首選容量:
environment :
DISK_SIZE : " 256G "
提示
這也可用於將現有磁碟調整為更大的容量,而不會遺失任何資料。
開啟「檔案總管」並點選「網路」部分,您將看到一台名為host.lan
的電腦。雙擊它,它將顯示一個名為Data
的資料夾,可以透過 compose 檔案將其綁定到主機上的任何資料夾:
volumes :
- /home/user/example:/data
範例資料夾/home/user/example
將作為\host.lanData
提供。
提示
您可以將此路徑對應到 Windows 中的磁碟機號,以便於存取。
若要下載無法從上面清單中選擇的不支援的 ISO 映像,請在VERSION
環境變數中指定該 ISO 的 URL,例如:
environment :
VERSION : " https://example.com/win.iso "
或者,您也可以跳過下載並使用本機文件,透過以下方式將其綁定到您的撰寫文件中:
volumes :
- /home/user/example.iso:/custom.iso
將範例路徑/home/user/example.iso
替換為所需 ISO 檔案的檔案名,在這種情況下, VERSION
的值將被忽略。
要在安裝後運行您自己的腳本,您可以建立一個名為install.bat
的文件,並將其與所需的任何其他文件(例如要安裝的軟體)一起放置在一個資料夾中。然後將該資料夾綁定到您的撰寫文件中,如下所示:
volumes :
- /home/user/example:/oem
範例資料夾/home/user/example
將在安裝過程中複製到C:OEM
,並且包含的install.bat
將在最後一步中執行。
最好堅持自動安裝,因為它會調整各種設定以防止在虛擬環境中執行 Windows 時出現常見問題。
但是,如果您堅持手動執行安裝,請將以下環境變數新增至您的撰寫檔案:
environment :
MANUAL : " Y "
預設情況下,容器最多允許使用 2 個 CPU 核心和 4 GB RAM。
如果您想要調整此值,可以使用下列環境變數指定所需的數量:
environment :
RAM_SIZE : " 8G "
CPU_CORES : " 4 "
預設情況下,安裝過程中會建立一個名為Docker
的用戶,密碼為空。
如果您想使用不同的憑證,可以在撰寫文件中變更它們:
environment :
USERNAME : " bill "
PASSWORD : " gates "
預設情況下,將下載英文版 Windows。但是您可以將LANGUAGE
環境變數新增到您的撰寫檔案中,以便指定替代語言:
environment :
LANGUAGE : " French "
您可以選擇: ??阿拉伯語,??保加利亞語,??中國人, ?克羅埃西亞語,??捷克語,??丹麥語,??荷蘭語,??英語, ?愛沙尼亞語,??芬蘭語,??法語, ?德國人,??希臘語,??希伯來語,??匈牙利語,??義大利語,??日本人, ?韓國人, ?拉脫維亞語,??立陶宛語,??挪威語,??拋光, ?葡萄牙語,??羅馬尼亞語,??俄語,??塞爾維亞語,??斯洛伐克語,??斯洛維尼亞語,??西班牙語, ?瑞典語,??泰語,??土耳其語和??烏克蘭。
如果您想要使用的鍵盤佈局或區域設定不是所選語言的預設設置,您可以新增帶有區域性程式碼的KEYBOARD
和REGION
變量,如下所示:
environment :
REGION : " en-US "
KEYBOARD : " en-US "
筆記
安裝完成後更改這些值將無法運作。在這種情況下,請使用 Windows 內部的控制台。
網路檢視器主要是在安裝過程中使用,因為它的影像品質較低,並且沒有音訊或剪貼簿等。
因此,為了獲得更好的體驗,您可以使用任何 Microsoft 遠端桌面用戶端連接到容器的 IP,使用使用者名稱Docker
並將密碼留空。
Play 商店提供適用於 Android 的 RDP 用戶端,Apple Store 提供適用於 iOS 的 RDP 用戶端。對於 Linux,您可以使用 FreeRDP,在 Windows 上,只需在搜尋框中鍵入mstsc
。
預設情況下,容器使用橋接網絡,與主機共用 IP 位址。
如果要為容器指派單獨的 IP 位址,可以如下建立 macvlan 網路:
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
請務必修改這些值以符合您的本機子網路。
建立網路後,將您的撰寫文件變更為如下所示:
services :
windows :
container_name : windows
....
networks :
vlan :
ipv4_address : 192.168.0.100
networks :
vlan :
external : true
這種方法的另一個好處是您不必再執行任何連接埠映射,因為預設所有連接埠都會公開。
重要的
由於 macvlan 的設計,Docker 主機無法存取此 IP 位址,這不允許兩者之間進行通訊。如果這是一個問題,您需要建立第二個 macvlan 作為解決方法。
為 macvlan 設定容器後,Windows 可以透過向路由器請求 IP 來成為家庭網路的一部分,就像真正的 PC 一樣。
若要啟用此模式,請將以下行新增至您的撰寫檔案:
environment :
DHCP : " Y "
devices :
- /dev/vhost-net
device_cgroup_rules :
- ' c *:* rwm '
筆記
在這種模式下,容器和Windows將各自擁有自己獨立的IP。
若要建立其他磁碟,請像這樣修改您的撰寫檔案:
environment :
DISK2_SIZE : " 32G "
DISK3_SIZE : " 64G "
volumes :
- /home/example:/storage2
- /mnt/data/example:/storage3
透過將磁碟裝置新增至您的撰寫檔案中,可以直接傳遞磁碟裝置:
devices :
- /dev/sdb:/disk1
- /dev/sdc:/disk2
如果您希望它成為主磁碟機(將在安裝過程中格式化),請使用/disk1
,並使用/disk2
和更高版本將它們新增為輔助磁碟機(將保持不變)。
若要傳遞 USB 設備,請先透過lsusb
指令尋找其供應商和產品 ID,然後將它們新增至您的 compose 檔案中,如下所示:
environment :
ARGUMENTS : " -device usb-host,vendorid=0x1234,productid=0x1234 "
devices :
- /dev/bus/usb
重要的
如果設備是U盤,請等待安裝完成後再連接。否則安裝可能會失敗,因為磁碟的順序可能會重新排列。
只有 Linux 和 Windows 11 支援 KVM 虛擬化,但不幸的是 macOS 和 Windows 10 不支援。
您可以在Linux中執行以下命令來檢查您的系統:
sudo apt install cpu-checker
sudo kvm-ok
如果您收到kvm-ok
錯誤提示 KVM 無法使用,請檢查是否:
BIOS 中啟用了虛擬化擴充( Intel VT-x
或AMD SVM
)。
如果您在虛擬機器內執行容器,則啟用了「巢狀虛擬化」。
您沒有使用雲端供應商,因為他們中的大多數不允許其 VPS 進行嵌套虛擬化。
如果您沒有收到kvm-ok
的任何錯誤,但容器仍然抱怨 KVM,請檢查是否:
您沒有使用“Docker Desktop for Linux”,因為它不支援 KVM,而是直接使用 Docker Engine。
它可以幫助將privileged: true
新增至您的撰寫檔案(或將sudo
新增至您的docker run
命令),以排除任何權限問題。
您可以使用 dokur/macos 來實現。除了自動安裝之外,它具有許多相同的功能。
是的,該專案僅包含開源程式碼,不分發任何受版權保護的資料。程式碼中找到的任何產品金鑰都只是 Microsoft 出於試用目的提供的通用佔位符。因此,根據所有適用的法律,該項目將被視為合法。
本項目中提及的產品名稱、標誌、品牌和其他商標均為其各自商標所有者的財產。此項目不隸屬於 Microsoft Corporation,也不受 Microsoft Corporation 贊助或認可。