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
ผ่านนักเทียบท่า CLI:
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
ผ่าน Kubernetes:
kubectl apply -f kubernetes.yml
ง่ายมาก! เหล่านี้คือขั้นตอน:
เริ่มต้นคอนเทนเนอร์และเชื่อมต่อกับพอร์ต 8006 โดยใช้เว็บเบราว์เซอร์ของคุณ
นั่งลงและผ่อนคลายในขณะที่ความมหัศจรรย์เกิดขึ้น การติดตั้งทั้งหมดจะดำเนินการโดยอัตโนมัติเต็มรูปแบบ
เมื่อคุณเห็นเดสก์ท็อป แสดงว่าการติดตั้ง Windows ของคุณพร้อมใช้งานแล้ว
เพลิดเพลินไปกับเครื่องใหม่ของคุณและอย่าลืมติดดาว repo นี้!
ตามค่าเริ่มต้น Windows 11 จะถูกติดตั้ง แต่คุณสามารถเพิ่มตัวแปรสภาพแวดล้อม VERSION
ลงในไฟล์เขียนของคุณได้ เพื่อระบุเวอร์ชัน Windows อื่นที่จะดาวน์โหลด:
environment :
VERSION : " 11 "
เลือกจากค่าด้านล่าง:
ค่า | เวอร์ชัน | ขนาด |
---|---|---|
11 | วินโดว์ 11 โปร | 5.4 กิกะไบต์ |
11l | วินโดวส์ 11 LTSC | 4.2 กิกะไบต์ |
11e | วินโดวส์ 11 องค์กร | 5.8 กิกะไบต์ |
10 | วินโดว์ 10 โปร | 5.7 กิกะไบต์ |
10l | วินโดวส์ 10 LTSC | 4.6GB |
10e | วินโดวส์ 10 องค์กร | 5.2 กิกะไบต์ |
8 | วินโดวส์ 8.1 โปร | 4.0 กิกะไบต์ |
8e | วินโดวส์ 8.1 องค์กร | 3.7 กิกะไบต์ |
7e | วินโดวส์ 7 เอ็นเตอร์ไพรส์ | 3.0 กิกะไบต์ |
ve | วินโดวส์วิสต้าเอ็นเตอร์ไพรส์ | 3.0 กิกะไบต์ |
xp | วินโดว์ XP มืออาชีพ | 0.6 กิกะไบต์ |
2025 | วินโดวส์เซิร์ฟเวอร์ 2025 | 5.0 กิกะไบต์ |
2022 | วินโดวส์เซิร์ฟเวอร์ 2022 | 4.7 กิกะไบต์ |
2019 | วินโดวส์เซิร์ฟเวอร์ 2019 | 5.3 กิกะไบต์ |
2016 | วินโดวส์เซิร์ฟเวอร์ 2016 | 6.5 กิกะไบต์ |
2012 | วินโดวส์เซิร์ฟเวอร์ 2012 | 4.3 กิกะไบต์ |
2008 | วินโดวส์เซิร์ฟเวอร์ 2008 | 3.0 กิกะไบต์ |
2003 | วินโดวส์เซิร์ฟเวอร์ 2003 | 0.6 กิกะไบต์ |
เคล็ดลับ
หากต้องการติดตั้ง Windows เวอร์ชัน ARM64 ให้ใช้ dockur/windows-arm
หากต้องการเปลี่ยนตำแหน่งที่เก็บข้อมูล ให้รวมการเมานต์การผูกต่อไปนี้ในไฟล์เขียนของคุณ:
volumes :
- /var/win:/storage
แทนที่พาธตัวอย่าง /var/win
ด้วยโฟลเดอร์จัดเก็บข้อมูลที่ต้องการ
หากต้องการขยายขนาดเริ่มต้นเป็น 64 GB ให้เพิ่มการตั้งค่า DISK_SIZE
ให้กับไฟล์เขียนของคุณและตั้งค่าเป็นความจุที่คุณต้องการ:
environment :
DISK_SIZE : " 256G "
เคล็ดลับ
นอกจากนี้ยังสามารถใช้เพื่อปรับขนาดดิสก์ที่มีอยู่ให้มีความจุมากขึ้นโดยไม่ทำให้ข้อมูลสูญหาย
เปิด 'File Explorer' และคลิกที่ส่วน 'เครือข่าย' คุณจะเห็นคอมพิวเตอร์ชื่อ host.lan
ดับเบิลคลิกแล้วมันจะแสดงโฟลเดอร์ชื่อ Data
ซึ่งสามารถผูกกับโฟลเดอร์ใดก็ได้บนโฮสต์ของคุณผ่านไฟล์เขียน:
volumes :
- /home/user/example:/data
โฟลเดอร์ตัวอย่าง /home/user/example
จะพร้อมใช้งานเป็น \host.lanData
เคล็ดลับ
คุณสามารถแมปเส้นทางนี้กับอักษรระบุไดรฟ์ใน Windows เพื่อให้เข้าถึงได้ง่ายขึ้น
หากต้องการดาวน์โหลดอิมเมจ ISO ที่ไม่รองรับซึ่งเลือกไม่ได้จากรายการด้านบน ให้ระบุ URL ของ ISO นั้นในตัวแปรสภาพแวดล้อม VERSION
เช่น:
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 "
ตามค่าเริ่มต้น คอนเทนเนอร์จะได้รับอนุญาตให้ใช้ CPU สูงสุด 2 คอร์และ RAM 4 GB
หากคุณต้องการปรับเปลี่ยน คุณสามารถระบุจำนวนเงินที่ต้องการได้โดยใช้ตัวแปรสภาพแวดล้อมต่อไปนี้:
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 Remote Desktop กับ IP ของคอนเทนเนอร์ได้ โดยใช้ชื่อผู้ใช้ Docker
และปล่อยให้รหัสผ่านว่างไว้
มีไคลเอนต์ RDP สำหรับ Android ที่มีอยู่ใน Play Store และอีกหนึ่งไคลเอนต์สำหรับ iOS ใน Apple Store สำหรับ 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
ข้อดีเพิ่มเติมของแนวทางนี้คือ คุณจะไม่ต้องทำการแมปพอร์ตใดๆ อีกต่อไป เนื่องจากพอร์ตทั้งหมดจะถูกเปิดเผยตามค่าเริ่มต้น
สำคัญ
ที่อยู่ IP นี้ไม่สามารถเข้าถึงได้จากโฮสต์ Docker เนื่องจากการออกแบบของ macvlan ซึ่งไม่อนุญาตให้มีการสื่อสารระหว่างทั้งสอง หากนี่เป็นข้อกังวล คุณจะต้องสร้าง macvlan ตัวที่สองเพื่อใช้เป็นวิธีแก้ปัญหา
หลังจากกำหนดค่าคอนเทนเนอร์สำหรับ macvlan แล้ว Windows จะกลายเป็นส่วนหนึ่งของเครือข่ายในบ้านของคุณได้โดยการขอ IP จากเราเตอร์ของคุณ เช่นเดียวกับพีซีจริง ๆ
หากต้องการเปิดใช้งานโหมดนี้ ให้เพิ่มบรรทัดต่อไปนี้ลงในไฟล์เขียนของคุณ:
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
จากนั้นเพิ่มลงในไฟล์เขียนของคุณดังนี้:
environment :
ARGUMENTS : " -device usb-host,vendorid=0x1234,productid=0x1234 "
devices :
- /dev/bus/usb
สำคัญ
หากอุปกรณ์เป็นดิสก์ไดรฟ์ USB โปรดรอจนกระทั่งหลังจากการติดตั้งเสร็จสิ้นจึงจะเชื่อมต่อได้ มิฉะนั้นการติดตั้งอาจล้มเหลว เนื่องจากลำดับของดิสก์สามารถถูกจัดเรียงใหม่ได้
มีเพียง Linux และ Windows 11 เท่านั้นที่รองรับการจำลองเสมือน KVM ส่วน macOS และ Windows 10 ก็ไม่รองรับ
คุณสามารถรันคำสั่งต่อไปนี้ใน Linux เพื่อตรวจสอบระบบของคุณ:
sudo apt install cpu-checker
sudo kvm-ok
หากคุณได้รับข้อผิดพลาดจาก kvm-ok
ระบุว่าไม่สามารถใช้ KVM ได้ โปรดตรวจสอบว่า:
ส่วนขยายการจำลองเสมือน ( Intel VT-x
หรือ AMD SVM
) ถูกเปิดใช้งานใน BIOS ของคุณ
คุณเปิดใช้งาน "การจำลองเสมือนแบบซ้อน" หากคุณใช้งานคอนเทนเนอร์ภายในเครื่องเสมือน
คุณไม่ได้ใช้ผู้ให้บริการคลาวด์ เนื่องจากผู้ให้บริการส่วนใหญ่ไม่อนุญาตให้มีการจำลองเสมือนแบบซ้อนสำหรับ VPS ของตน
หากคุณไม่ได้รับข้อผิดพลาดใดๆ จาก kvm-ok
แต่คอนเทนเนอร์ยังคงบ่นเกี่ยวกับ KVM โปรดตรวจสอบว่า:
คุณไม่ได้ใช้ "Docker Desktop for Linux" เนื่องจากไม่รองรับ KVM แต่ให้ใช้ Docker Engine โดยตรงแทน
การเพิ่ม privileged: true
ให้กับไฟล์เขียนของคุณอาจช่วยได้ (หรือ sudo
ไปยังคำสั่ง docker run
ของคุณ) เพื่อแยกแยะปัญหาการอนุญาตใด ๆ
คุณสามารถใช้ dockur/macos เพื่อสิ่งนั้นได้ มันแชร์ฟีเจอร์เดียวกันหลายอย่าง ยกเว้นการติดตั้งอัตโนมัติ
ใช่ โครงการนี้มีเฉพาะรหัสโอเพ่นซอร์สเท่านั้น และไม่ได้เผยแพร่เนื้อหาที่มีลิขสิทธิ์ใดๆ รหัสผลิตภัณฑ์ใดๆ ที่พบในรหัสเป็นเพียงตัวยึดตำแหน่งทั่วไปที่ Microsoft มอบให้เพื่อการทดลองใช้ ดังนั้นภายใต้กฎหมายที่บังคับใช้ทั้งหมด โครงการนี้จึงถือว่าถูกกฎหมาย
ชื่อผลิตภัณฑ์ โลโก้ แบรนด์ และเครื่องหมายการค้าอื่น ๆ ที่อ้างถึงภายในโครงการนี้เป็นทรัพย์สินของผู้ถือเครื่องหมายการค้าที่เกี่ยวข้อง โครงการนี้ไม่มีส่วนเกี่ยวข้อง สนับสนุน หรือรับรองโดย Microsoft Corporation