
windows v6.03
KVM त्वरण, स्वचालित इंस्टॉलेशन और अनुकूलन योग्य संसाधनों के साथ Docker कंटेनर के अंदर Windows चलाएँ। कई Windows संस्करणों, USB passthrough और macvlan नेटवर्किंग का समर्थन करता है।
विंडोज़
विंडोज़ एक डॉकर कंटेनर के अंदर।
विशेषताएँ ✨
- डॉकर कंटेनर के अंदर विंडोज़ चलाता है
- स्वचालित डाउनलोड और बिना हस्तक्षेप के इंस्टॉलेशन
- आधुनिक और पुराने विंडोज़ संस्करणों का समर्थन करता है
- KVM त्वरण के साथ लगभग नेटिव प्रदर्शन
- अनुकूलन योग्य CPU, मेमोरी और स्टोरेज आवंटन
- मेमोरी बैलूनिंग के साथ गतिशील मेमोरी आवंटन
- USB पासथ्रू और होस्ट फोल्डर साझाकरण
- NAT, यूज़र-मोड, macvlan और macvtap नेटवर्किंग का समर्थन करता है
वीडियो 📺
उपयोग 🐳
डॉकर कंपोज़:
services:
windows:
image: dockurr/windows
container_name: windows
environment:
VERSION: "11"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
volumes:
- ./windows:/storage
restart: always
stop_grace_period: 2m
डॉकर CLI:
docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows
कुबरनेट्स:
kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml
GitHub Codespaces:
ग्राफिकल इंस्टॉलर:
आवश्यकताएँ ⚙️
- KVM समर्थन वाले Linux होस्ट पर Docker या Podman।
- नेस्टेड वर्चुअलाइज़ेशन सक्षम के साथ Windows 11 पर Docker Desktop या Podman (Desktop)।
- कम से कम 4 GB उपलब्ध RAM।
- कम से कम 64 GB खाली डिस्क स्थान।
[!NOTE] Linux, macOS और Windows 10 पर Docker Desktop वर्तमान में कंटेनरों को KVM एक्सेस प्रदान नहीं करता है, इसलिए इसका समर्थन नहीं किया जाता है।
अक्सर पूछे जाने वाले प्रश्न 💬
मैं इसका उपयोग कैसे करूँ?
बहुत सरल! ये चरण हैं:
-
कंटेनर शुरू करें और अपने वेब ब्राउज़र का उपयोग करके पोर्ट 8006 से कनेक्ट करें।
-
आराम से बैठें और जादू होते देखें, पूरी इंस्टॉलेशन पूरी तरह से स्वचालित रूप से की जाएगी।
-
जैसे ही आप डेस्कटॉप देखेंगे, आपका विंडोज़ इंस्टॉलेशन उपयोग के लिए तैयार है।
अपनी नई मशीन का आनंद लें, और इस रेपो को स्टार करना न भूलें!
मैं विंडोज़ संस्करण कैसे चुनूँ?
डिफ़ॉल्ट रूप से, Windows 11 Pro इंस्टॉल किया जाएगा। लेकिन आप डाउनलोड किए जाने वाले वैकल्पिक विंडोज़ संस्करण को निर्दिष्ट करने के लिए अपनी कंपोज़ फ़ाइल में VERSION पर्यावरण चर जोड़ सकते हैं:
environment:
VERSION: "10"
नीचे दिए गए मानों में से चुनें:
| मान | संस्करण | आकार |
|---|---|---|
11 | Windows 11 Pro | 7.9 GB |
11l | Windows 11 LTSC | 4.7 GB |
11e | Windows 11 Enterprise | 6.6 GB |
10 | Windows 10 Pro | 5.7 GB |
10l | Windows 10 LTSC | 4.6 GB |
10e | Windows 10 Enterprise | 5.2 GB |
8e | Windows 8.1 Enterprise | 3.7 GB |
7u | Windows 7 Ultimate | 3.1 GB |
vu | Windows Vista Ultimate | 3.0 GB |
xp | Windows XP Professional | 0.6 GB |
2k | Windows 2000 Professional | 0.4 GB |
2025 | Windows Server 2025 | 7.6 GB |
2022 | Windows Server 2022 | 6.0 GB |
2019 | Windows Server 2019 | 5.3 GB |
2016 | Windows Server 2016 | 6.5 GB |
2012 | Windows Server 2012 | 4.3 GB |
2008 | Windows Server 2008 | 3.0 GB |
2003 | Windows Server 2003 | 0.6 GB |
[!TIP] विंडोज़ के ARM64 संस्करणों को इंस्टॉल करने के लिए dockur/windows-arm का उपयोग करें।
मैं स्टोरेज स्थान कैसे बदलूँ?
स्टोरेज स्थान बदलने के लिए, अपनी कंपोज़ फ़ाइल में निम्नलिखित बाइंड माउंट शामिल करें:
volumes:
- ./windows:/storage
उदाहरण पथ ./windows को अपने इच्छित स्टोरेज फ़ोल्डर या नामित वॉल्यूम से बदलें।
मैं डिस्क का आकार कैसे बदलूँ?
64 GB के डिफ़ॉल्ट आकार को बढ़ाने के लिए, अपनी कंपोज़ फ़ाइल में DISK_SIZE सेटिंग जोड़ें और इसे अपनी पसंदीदा क्षमता पर सेट करें:
environment:
DISK_SIZE: "256G"
[!TIP] इसका उपयोग किसी मौजूदा डिस्क को बिना किसी डेटा हानि के बड़ी क्षमता में आकार बदलने के लिए भी किया जा सकता है। हालाँकि, बाद में आपको डिस्क विभाजन को मैन्युअल रूप से बढ़ाना होगा, क्योंकि जोड़ा गया डिस्क स्थान असंबद्ध के रूप में दिखाई देगा।
मैं होस्ट के साथ फ़ाइलें कैसे साझा करूँ?
इंस्टॉलेशन के बाद आपके डेस्कटॉप पर Shared नामक एक फ़ोल्डर होगा, जिसका उपयोग होस्ट मशीन के साथ फ़ाइलों के आदान-प्रदान के लिए किया जा सकता है।
इस उद्देश्य के लिए होस्ट पर एक फ़ोल्डर चुनने हेतु, अपनी कंपोज़ फ़ाइल में निम्नलिखित बाइंड माउंट शामिल करें:
volumes:
- ./example:/shared
उदाहरण पथ ./example को अपने इच्छित साझा फ़ोल्डर से बदलें, जो तब Shared के रूप में दिखाई देगा।
मैं CPU या RAM की मात्रा कैसे बदलूँ?
डिफ़ॉल्ट रूप से, विंडोज़ को 2 CPU कोर और 4 GB RAM उपयोग करने की अनुमति होगी।
यदि आप इसे समायोजित करना चाहते हैं, तो आप निम्नलिखित पर्यावरण चरों का उपयोग करके वांछित मात्रा निर्दिष्ट कर सकते हैं:
environment:
RAM_SIZE: "8G"
CPU_CORES: "4"
मैं उपयोगकर्ता नाम और पासवर्ड कैसे कॉन्फ़िगर करूँ?
डिफ़ॉल्ट रूप से, Docker नामक एक उपयोगकर्ता बनाया जाता है और उसका पासवर्ड admin होता है।
यदि आप इंस्टॉलेशन के दौरान अलग क्रेडेंशियल सेट करना चाहते हैं, तो आप उन्हें अपनी कंपोज़ फ़ाइल में कॉन्फ़िगर कर सकते हैं:
environment:
USERNAME: "bill"
PASSWORD: "gates"
मैं विंडोज़ भाषा कैसे चुनूँ?
डिफ़ॉल्ट रूप से, विंडोज़ का अंग्रेज़ी संस्करण डाउनलोड किया जाएगा।
लेकिन आप डाउनलोड की जाने वाली वैकल्पिक भाषा निर्दिष्ट करने के लिए अपनी कंपोज़ फ़ाइल में LANGUAGE पर्यावरण चर जोड़ सकते हैं:
environment:
LANGUAGE: "French"
आप इनमें से चुन सकते हैं: 🇦🇪 अरबी, 🇧🇬 बल्गेरियाई, 🇨🇳 चीनी, 🇭🇷 क्रोएशियाई, 🇨🇿 चेक, 🇩🇰 डेनिश, 🇳🇱 डच, 🇬🇧 अंग्रेज़ी, 🇪🇪 एस्टोनियाई, 🇫🇮 फ़िनिश, 🇫🇷 फ़्रेंच, 🇩🇪 जर्मन, 🇬🇷 ग्रीक, 🇮🇱 हिब्रू, 🇭🇺 हंगेरियाई, 🇮🇹 इतालवी, 🇯🇵 जापानी, 🇰🇷 कोरियाई, 🇱🇻 लातवियाई, 🇱🇹 लिथुआनियाई, 🇳🇴 नॉर्वेजियाई, 🇵🇱 पोलिश, 🇵🇹 पुर्तगाली, 🇷🇴 रोमानियाई, 🇷🇺 रूसी, 🇷🇸 सर्बियाई, 🇸🇰 स्लोवाक, 🇸🇮 स्लोवेनियाई, 🇪🇸 स्पेनिश, 🇸🇪 स्वीडिश, 🇹🇭 थाई, 🇹🇷 तुर्की और 🇺🇦 यूक्रेनी।
मैं कीबोर्ड लेआउट कैसे चुनूँ?
यदि आप अपनी चुनी गई भाषा के लिए डिफ़ॉल्ट नहीं होने वाला कीबोर्ड लेआउट या लोकेल सेट करना चाहते हैं, तो आप KEYBOARD और REGION चर इस प्रकार जोड़ सकते हैं:
environment:
REGION: "en-US"
KEYBOARD: "en-US"
मैं एक कस्टम इमेज कैसे इंस्टॉल करूँ?
किसी असमर्थित ISO इमेज को डाउनलोड करने के लिए, उसका URL VERSION पर्यावरण चर में निर्दिष्ट करें:
environment:
VERSION: "https://example.com/win.iso"
वैकल्पिक रूप से, आप डाउनलोड छोड़ सकते हैं और इसके बजाय एक स्थानीय फ़ाइल का उपयोग कर सकते हैं, इसे अपनी कंपोज़ फ़ाइल में इस प्रकार बाइंड करके:
volumes:
- ./example.iso:/custom.iso
उदाहरण पथ ./example.iso को अपनी इच्छित ISO फ़ाइल के फ़ाइल नाम से बदलें। इस स्थिति में VERSION का मान अनदेखा कर दिया जाएगा।
मैं इंस्टॉलेशन के बाद एक स्क्रिप्ट कैसे चलाऊँ?
इंस्टॉलेशन के बाद अपनी स्क्रिप्ट चलाने के लिए, आप install.bat नामक एक फ़ाइल बना सकते हैं और इसे उन सभी अतिरिक्त फ़ाइलों के साथ एक फ़ोल्डर में रख सकते हैं जिनकी इसे आवश्यकता है (उदाहरण के लिए इंस्टॉल किया जाने वाला सॉफ़्टवेयर)।
फिर उस फ़ोल्डर को अपनी कंपोज़ फ़ाइल में इस प्रकार बाइंड करें:
volumes:
- ./example:/oem
उदाहरण फ़ोल्डर ./example को C:\OEM में कॉपी किया जाएगा और उस फ़ोल्डर के अंदर की install.bat फ़ाइल स्वचालित इंस्टॉलेशन के अंतिम चरण के दौरान निष्पादित की जाएगी।
मैं मैन्युअल इंस्टॉलेशन कैसे करूँ?
स्वचालित इंस्टॉलेशन पर ही बने रहने की सलाह दी जाती है, क्योंकि यह वर्चुअल वातावरण में विंडोज़ चलाते समय सामान्य समस्याओं को रोकने के लिए विभिन्न सेटिंग्स समायोजित करता है।
हालाँकि, यदि आप मैन्युअल रूप से इंस्टॉलेशन करने पर ज़ोर देते हैं (अपने जोखिम पर), तो अपनी कंपोज़ फ़ाइल में निम्नलिखित पर्यावरण चर जोड़ें:
environment:
MANUAL: "Y"
मैं RDP का उपयोग करके कैसे कनेक्ट करूँ?
वेब व्यूअर मुख्य रूप से इंस्टॉलेशन के दौरान उपयोग के लिए है, क्योंकि यह RDP की तुलना में कम प्रतिक्रियाशील है और क्लिपबोर्ड साझाकरण जैसी सुविधाओं का समर्थन नहीं करता है।
इसलिए बेहतर अनुभव के लिए आप किसी भी Microsoft Remote Desktop क्लाइंट का उपयोग करके कंटेनर के IP से कनेक्ट कर सकते हैं, उपयोगकर्ता नाम Docker और पासवर्ड admin का उपयोग करके।
Android के लिए Play Store से उपलब्ध एक RDP क्लाइंट है और iOS के लिए Apple Store में एक है। Linux के लिए आप FreeRDP का उपयोग कर सकते हैं और Windows पर सर्च बॉक्स में बस mstsc टाइप करें।
मैं ऑडियो कैसे सक्षम करूँ?
ऑडियो डिफ़ॉल्ट रूप से अक्षम है जब तक कि आप RDP का उपयोग नहीं कर रहे हैं। इसे ब्राउज़र में स्ट्रीम करने के लिए, निम्नलिखित पर्यावरण चर जोड़ें:
environment:
AUDIO: "Y"
फिर वेब व्यूअर में Settings → Advanced के अंतर्गत Audio सक्षम करें। यह स्ट्रीम केवल तब सक्रिय रहती है जब यह विकल्प सक्षम होता है, इसलिए अन्यथा यह अतिरिक्त बैंडविड्थ का उपयोग नहीं करता है।
मैं कंटेनर को एक अलग IP पता कैसे प्रदान करूँ?
डिफ़ॉल्ट रूप से, कंटेनर ब्रिज नेटवर्किंग का उपयोग करता है, जो होस्ट के साथ 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
..<snip>..
networks:
vlan:
ipv4_address: 192.168.0.100
networks:
vlan:
external: true
इस दृष्टिकोण का एक अतिरिक्त लाभ यह है कि आपको अब कोई पोर्ट मैपिंग करने की आवश्यकता नहीं होगी, क्योंकि सभी पोर्ट डिफ़ॉल्ट रूप से एक्सपोज़ हो जाएंगे।
[!IMPORTANT]
macvlan के डिज़ाइन के कारण यह IP पता Docker होस्ट से एक्सेस नहीं किया जा सकेगा, क्योंकि यह दोनों के बीच संचार की अनुमति नहीं देता है। यदि यह चिंता का विषय है, तो आपको एक दूसरा macvlan बनाने की आवश्यकता है।
विंडोज़ मेरे राउटर से IP पता कैसे प्राप्त कर सकता है?
कंटेनर को macvlan के लिए कॉन्फ़िगर करने के बाद, विंडोज़ के लिए एक वास्तविक PC की तरह अपने राउटर से IP का अनुरोध करके आपके होम नेटवर्क का हिस्सा बनना संभव है।
इस मोड को सक्षम करने के लिए, जिसमें कंटेनर और विंडोज़ के अलग-अलग IP पते होंगे, अपनी कंपोज़ फ़ाइल में निम्नलिखित पंक्तियाँ जोड़ें:
environment:
DHCP: "Y"
devices:
- /dev/vhost-net
device_cgroup_rules:
- 'c *:* rwm'
मैं एकाधिक डिस्क कैसे जोड़ूँ?
अतिरिक्त डिस्क बनाने के लिए, अपनी कंपोज़ फ़ाइल को इस प्रकार संशोधित करें:
environment:
DISK2_SIZE: "32G"
DISK3_SIZE: "64G"
volumes:
- ./example2:/storage2
- ./example3:/storage3
मैं एक डिस्क को पास थ्रू कैसे करूँ?
आप डिस्क डिवाइस या पार्टीशन को सीधे अपनी कंपोज़ फ़ाइल में इस प्रकार जोड़कर पास थ्रू कर सकते हैं:
devices:
- /dev/sdb:/disk1
- /dev/sdc1:/disk2
यदि आप चाहते हैं कि यह आपकी मुख्य ड्राइव बने (जो इंस्टॉलेशन के दौरान फ़ॉर्मेट होगी), तो /disk1 का उपयोग करें, और उन्हें द्वितीयक ड्राइव के रूप में जोड़ने के लिए /disk2 और उससे ऊपर का उपयोग करें (जो अछूते रहेंगे)।
मैं एक USB डिवाइस को पास थ्रू कैसे करूँ?
USB डिवाइस को पास थ्रू करने के लिए, पहले lsusb कमांड के माध्यम से उसके विक्रेता और उत्पाद ID देखें, फिर उन्हें अपनी कंपोज़ फ़ाइल में इस प्रकार जोड़ें:
environment:
ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234"
devices:
- /dev/bus/usb
[!WARNING]
Windows Setup समाप्त होने से पहले USB मास स्टोरेज डिवाइस जोड़ने से यह विफल हो सकता है। या इससे भी बदतर: ड्राइव को सिस्टम डिस्क के रूप में फ़ॉर्मेट किया जा सकता है, और आपका सारा डेटा खो जाएगा! इसलिए पहली बार कंटेनर लॉन्च करते समय उन्हें हमेशा डिस्कनेक्ट रखें।
क्या ये सभी उपलब्ध विकल्प हैं?
नहीं। सभी समर्थित सेटिंग्स का पूर्ण अवलोकन देखने के लिए, पर्यावरण चर पृष्ठ देखें।
मैं कैसे सत्यापित करूँ कि KVM उपलब्ध है?
सबसे पहले, सुनिश्चित करें कि आपका प्लेटफ़ॉर्म और कंटेनर रनटाइम ऊपर सूचीबद्ध आवश्यकताओं को पूरा करते हैं।
Linux होस्ट पर, cpu-checker इंस्टॉल करें और चलाएँ:
sudo apt install cpu-checker
sudo kvm-ok
एक कार्यशील कॉन्फ़िगरेशन को यह रिपोर्ट करना चाहिए:
KVM acceleration can be used
आप यह भी सत्यापित कर सकते हैं कि KVM डिवाइस मौजूद है:
ls -l /dev/kvm
यदि KVM अनुपलब्ध है, तो जाँच करें कि:
- हार्डवेयर वर्चुअलाइज़ेशन (
Intel VT-xयाAMD-V) आपके BIOS या UEFI में सक्षम है। - जब होस्ट स्वयं एक वर्चुअल मशीन है तो नेस्टेड वर्चुअलाइज़ेशन सक्षम है।
- आपका VPS या क्लाउड प्रदाता नेस्टेड वर्चुअलाइज़ेशन का समर्थन करता है।
यदि kvm-ok सफल होता है लेकिन कंटेनर अभी भी रिपोर्ट करता है कि KVM अनुपलब्ध है, तो आप अनुमति या डिवाइस-एक्सेस समस्या से इंकार करने के लिए अस्थायी रूप से अपनी Compose फ़ाइल में privileged: true जोड़ सकते हैं।
मैं एक कंटेनर में macOS कैसे चलाऊँ?
इसके लिए आप dockur/macos का उपयोग कर सकते हैं। यह स्वचालित इंस्टॉलेशन को छोड़कर कई समान सुविधाएँ साझा करता है।
मैं एक कंटेनर में Linux डेस्कटॉप कैसे चलाऊँ?
उस स्थिति में आप qemus/qemu का उपयोग कर सकते हैं।
क्या यह प्रोजेक्ट कानूनी है?
हाँ, इस प्रोजेक्ट में केवल ओपन-सोर्स कोड है और यह स्वयं विंडोज़ वितरित नहीं करता है। कोड में पाए जाने वाले कोई भी उत्पाद कुंजियाँ Microsoft द्वारा परीक्षण उद्देश्यों के लिए प्रकाशित सामान्य इंस्टॉलेशन कुंजियाँ हैं और वैध सक्रियण लाइसेंस नहीं हैं।
आप यह सुनिश्चित करने के लिए ज़िम्मेदार हैं कि आपके पास वैध विंडोज़ लाइसेंस है और आपका उपयोग Microsoft की लाइसेंसिंग शर्तों का अनुपालन करता है।
स्टार्स 🌟
अस्वीकरण ⚖️
इस प्रोजेक्ट में संदर्भित उत्पाद नाम, लोगो, ब्रांड और अन्य ट्रेडमार्क उनके संबंधित ट्रेडमार्क धारकों की संपत्ति हैं। यह प्रोजेक्ट Microsoft Corporation से संबद्ध, प्रायोजित या समर्थित नहीं है।


