Windows di dalam wadah Docker.
Melalui Docker Tulis:
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
Melalui Docker CLI:
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
Melalui Kubernetes:
kubectl apply -f kubernetes.yml
Sangat sederhana! Berikut langkah-langkahnya:
Mulai wadah dan sambungkan ke port 8006 menggunakan browser web Anda.
Duduk dan bersantailah sementara keajaiban terjadi, seluruh instalasi akan dilakukan sepenuhnya otomatis.
Setelah Anda melihat desktop, instalasi Windows Anda siap digunakan.
Nikmati mesin baru Anda, dan jangan lupa memberi bintang pada repo ini!
Secara default, Windows 11 akan diinstal. Namun Anda dapat menambahkan variabel lingkungan VERSION
ke file penulisan Anda, untuk menentukan versi Windows alternatif yang akan diunduh:
environment :
VERSION : " 11 "
Pilih dari nilai di bawah ini:
Nilai | Versi | Ukuran |
---|---|---|
11 | Windows 11 Pro | 5,4 GB |
11l | Windows 11 LTSC | 4,2 GB |
11e | Windows 11 Perusahaan | 5,8 GB |
10 | Windows 10 Pro | 5,7 GB |
10l | Windows 10 LTSC | 4,6 GB |
10e | Windows 10 Perusahaan | 5,2 GB |
8 | Windows 8.1 Pro | 4,0 GB |
8e | Windows 8.1 Perusahaan | 3,7 GB |
7e | Windows 7 Perusahaan | 3,0 GB |
ve | Windows Vista Perusahaan | 3,0 GB |
xp | Windows XP Profesional | 0,6 GB |
2025 | WindowsServer 2025 | 5,0 GB |
2022 | WindowsServer 2022 | 4,7 GB |
2019 | WindowsServer 2019 | 5,3 GB |
2016 | WindowsServer 2016 | 6,5 GB |
2012 | WindowsServer 2012 | 4,3 GB |
2008 | WindowsServer 2008 | 3,0 GB |
2003 | WindowsServer 2003 | 0,6 GB |
Tip
Untuk menginstal Windows versi ARM64 gunakan dokur/windows-arm.
Untuk mengubah lokasi penyimpanan, sertakan pengikatan pengikatan berikut dalam file penulisan Anda:
volumes :
- /var/win:/storage
Ganti contoh path /var/win
dengan folder penyimpanan yang diinginkan.
Untuk memperluas ukuran default 64 GB, tambahkan pengaturan DISK_SIZE
ke file penulisan Anda dan atur ke kapasitas pilihan Anda:
environment :
DISK_SIZE : " 256G "
Tip
Ini juga dapat digunakan untuk mengubah ukuran disk yang ada ke kapasitas yang lebih besar tanpa kehilangan data apa pun.
Buka 'File Explorer' dan klik pada bagian 'Jaringan', Anda akan melihat komputer bernama host.lan
. Klik dua kali dan itu akan menampilkan folder bernama Data
, yang dapat diikat ke folder mana pun di host Anda melalui file penulisan:
volumes :
- /home/user/example:/data
Folder contoh /home/user/example
akan tersedia sebagai \host.lanData
.
Tip
Anda dapat memetakan jalur ini ke huruf drive di Windows, untuk akses yang lebih mudah.
Untuk mengunduh image ISO yang tidak didukung dan tidak dapat dipilih dari daftar di atas, tentukan URL ISO tersebut di variabel lingkungan VERSION
, misalnya:
environment :
VERSION : " https://example.com/win.iso "
Alternatifnya, Anda juga dapat melewati pengunduhan dan menggunakan file lokal, dengan mengikatnya di file penulisan Anda dengan cara ini:
volumes :
- /home/user/example.iso:/custom.iso
Ganti jalur contoh /home/user/example.iso
dengan nama file ISO yang Anda inginkan, nilai VERSION
akan diabaikan dalam kasus ini.
Untuk menjalankan skrip Anda sendiri setelah instalasi, Anda dapat membuat file bernama install.bat
dan menempatkannya dalam folder bersama dengan file tambahan apa pun yang diperlukan (misalnya perangkat lunak yang akan diinstal). Kemudian ikat folder itu di file penulisan Anda seperti ini:
volumes :
- /home/user/example:/oem
Folder contoh /home/user/example
akan disalin ke C:OEM
selama instalasi dan install.bat
yang berisi akan dieksekusi pada langkah terakhir.
Yang terbaik adalah tetap menggunakan instalasi otomatis, karena ini menyesuaikan berbagai pengaturan untuk mencegah masalah umum saat menjalankan Windows di dalam lingkungan virtual.
Namun, jika Anda bersikeras melakukan instalasi secara manual, tambahkan variabel lingkungan berikut ke file penulisan Anda:
environment :
MANUAL : " Y "
Secara default, container diperbolehkan menggunakan maksimal 2 inti CPU dan RAM 4 GB.
Jika Anda ingin menyesuaikannya, Anda dapat menentukan jumlah yang diinginkan menggunakan variabel lingkungan berikut:
environment :
RAM_SIZE : " 8G "
CPU_CORES : " 4 "
Secara default, pengguna bernama Docker
dibuat selama instalasi, dengan kata sandi kosong.
Jika Anda ingin menggunakan kredensial yang berbeda, Anda dapat mengubahnya di file penulisan Anda:
environment :
USERNAME : " bill "
PASSWORD : " gates "
Secara default, Windows versi bahasa Inggris akan diunduh. Namun Anda dapat menambahkan variabel lingkungan LANGUAGE
ke file penulisan Anda, untuk menentukan bahasa alternatif:
environment :
LANGUAGE : " French "
Anda dapat memilih antara: ?? Arab, ?? Bulgaria, ?? Cina, ?? Kroasia, ?? Ceko, ?? Denmark, ?? Belanda, ?? Bahasa inggris, ?? Estonia, ?? Finlandia, ?? Perancis, ?? Jerman, ?? Orang yunani, ?? Ibrani, ?? Hongaria, ?? Italia, ?? Jepang, ?? Korea, ?? Latvia, ?? Lituania, ?? Norwegia, ?? Polandia, ?? Portugis, ?? Rumania, ?? Rusia, ?? Serbia, ?? Slovakia, ?? Slovenia, ?? Spanyol, ?? Swedia, ?? Thailand, ?? Turki dan ?? Ukraina.
Jika Anda ingin menggunakan tata letak keyboard atau lokal yang bukan default untuk bahasa pilihan Anda, Anda dapat menambahkan variabel KEYBOARD
dan REGION
dengan kode budaya, seperti ini:
environment :
REGION : " en-US "
KEYBOARD : " en-US "
Catatan
Mengubah nilai-nilai ini tidak akan berpengaruh setelah instalasi selesai. Gunakan panel kontrol di dalam Windows dalam hal ini.
Penampil web terutama dimaksudkan untuk digunakan selama instalasi, karena kualitas gambarnya rendah, dan tidak memiliki audio atau clipboard misalnya.
Jadi untuk pengalaman yang lebih baik, Anda dapat terhubung menggunakan klien Microsoft Remote Desktop apa pun ke IP penampung, menggunakan nama pengguna Docker
dan membiarkan kata sandi kosong.
Ada klien RDP untuk Android yang tersedia dari Play Store dan satu lagi untuk iOS di Apple Store. Untuk Linux Anda dapat menggunakan FreeRDP dan di Windows cukup ketik mstsc
di kotak pencarian.
Secara default, container menggunakan jaringan jembatan, yang berbagi alamat IP dengan host.
Jika Anda ingin menetapkan alamat IP individual ke kontainer, Anda dapat membuat jaringan macvlan sebagai berikut:
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
Pastikan untuk mengubah nilai-nilai ini agar sesuai dengan subnet lokal Anda.
Setelah Anda membuat jaringan, ubah file penulisan Anda menjadi seperti berikut:
services :
windows :
container_name : windows
....
networks :
vlan :
ipv4_address : 192.168.0.100
networks :
vlan :
external : true
Manfaat tambahan dari pendekatan ini adalah Anda tidak perlu lagi melakukan pemetaan port apa pun, karena semua port akan diekspos secara default.
Penting
Alamat IP ini tidak akan dapat diakses dari host Docker karena desain macvlan, yang tidak mengizinkan komunikasi antara keduanya. Jika ini merupakan masalah, Anda perlu membuat macvlan kedua sebagai solusinya.
Setelah mengkonfigurasi container untuk macvlan, Windows dapat menjadi bagian dari jaringan rumah Anda dengan meminta IP dari router Anda, seperti PC sebenarnya.
Untuk mengaktifkan mode ini, tambahkan baris berikut ke file penulisan Anda:
environment :
DHCP : " Y "
devices :
- /dev/vhost-net
device_cgroup_rules :
- ' c *:* rwm '
Catatan
Dalam mode ini, container dan Windows masing-masing akan memiliki IP tersendiri.
Untuk membuat disk tambahan, ubah file penulisan Anda seperti ini:
environment :
DISK2_SIZE : " 32G "
DISK3_SIZE : " 64G "
volumes :
- /home/example:/storage2
- /mnt/data/example:/storage3
Dimungkinkan untuk melewati perangkat disk secara langsung dengan menambahkannya ke file penulisan Anda dengan cara ini:
devices :
- /dev/sdb:/disk1
- /dev/sdc:/disk2
Gunakan /disk1
jika Anda ingin menjadikannya sebagai drive utama (yang akan diformat selama instalasi), dan gunakan /disk2
dan lebih tinggi untuk menambahkannya sebagai drive sekunder (yang tidak akan tersentuh).
Untuk melewati perangkat USB, pertama-tama cari vendor dan id produknya melalui perintah lsusb
, lalu tambahkan ke file penulisan Anda seperti ini:
environment :
ARGUMENTS : " -device usb-host,vendorid=0x1234,productid=0x1234 "
devices :
- /dev/bus/usb
Penting
Jika perangkat adalah drive disk USB, harap tunggu hingga instalasi selesai sebelum menghubungkannya. Jika tidak, penginstalan mungkin gagal, karena urutan disk dapat diatur ulang.
Hanya Linux dan Windows 11 yang mendukung virtualisasi KVM, sayangnya macOS dan Windows 10 tidak.
Anda dapat menjalankan perintah berikut di Linux untuk memeriksa sistem Anda:
sudo apt install cpu-checker
sudo kvm-ok
Jika Anda menerima pesan kesalahan dari kvm-ok
yang menunjukkan bahwa KVM tidak dapat digunakan, harap periksa apakah:
ekstensi virtualisasi ( Intel VT-x
atau AMD SVM
) diaktifkan di BIOS Anda.
Anda mengaktifkan "virtualisasi bersarang" jika Anda menjalankan wadah di dalam mesin virtual.
Anda tidak menggunakan penyedia cloud, karena kebanyakan dari mereka tidak mengizinkan virtualisasi bersarang untuk VPS mereka.
Jika Anda tidak menerima kesalahan apa pun dari kvm-ok
tetapi container masih mengeluhkan KVM, harap periksa apakah:
Anda tidak menggunakan "Docker Desktop untuk Linux" karena tidak mendukung KVM, melainkan gunakan Docker Engine secara langsung.
menambahkan privileged: true
ke file penulisan Anda (atau sudo
ke perintah docker run
Anda), dapat membantu untuk mengesampingkan masalah izin apa pun.
Anda dapat menggunakan dokur/macos untuk itu. Ini berbagi banyak fitur yang sama, kecuali untuk instalasi otomatis.
Ya, proyek ini hanya berisi kode sumber terbuka dan tidak mendistribusikan materi berhak cipta apa pun. Kunci produk apa pun yang ditemukan dalam kode hanyalah pengganti umum yang disediakan oleh Microsoft untuk tujuan uji coba. Jadi berdasarkan semua undang-undang yang berlaku, proyek ini akan dianggap sah.
Nama produk, logo, merek, dan merek dagang lain yang dimaksud dalam proyek ini adalah milik dari pemegang merek dagang masing-masing. Proyek ini tidak berafiliasi, disponsori, atau didukung oleh Microsoft Corporation.