Pour je ne sais quelle raison, vous pourriez avoir envie de virtualiser Windows. Chacun ses goûts, ses besoins et ses choix!
C'est pourquoi aujourd’hui, je vous propose... heu, beh en fait il n'y a pas vraiment de nom à l'application Docker.
Donc pour faire simple, on va dire qu'aujourd'hui je vous propose le tutoriel d'installation de Windows dans un container Docker. Vous aurez le choix parmi 15 versions, dont certaines de Windows Server.
Vous avez intérêt à ce que votre CPU supporte l'Hyper-V si non ce n'est pas la peine d'aller plus loin.
Il y a moyen sans, mais je peux vous jurer que lors de mes tests avec et sans, sans, c'est "injouable".
C'est comme essayer de jouer à Wolfenstein avec un Nokia 3310.
Niveau fluidité, c'est de la virtualisation Windows, mais en allouant des ressources suffisantes, c'est pas trop dégueulasse. Au plus votre matériel est performant, au meilleur le résultat sera.
⚡Caractéristiques
- Téléchargeur ISO
- Accélération KVM
- Visionneuse Web
- + évidemment, toutes les fonctions incluses dans Windows, suivant la version que vous choisissez.
Si vous avez la moindre difficulté, n'oubliez pas que vous pouvez rejoindre belginux sur Discord et Matrix!
Choisir sa version de Windows
Pour commencer il va falloir choisir la version de Windows que vous souhaitez installer, notez sur le côté la (ou le?) "Value" correspondante à la version. Par exemple si vous souhaitez la version 11, la Value sera win11.
Value | Description | Source | Transfer | Size |
---|---|---|---|---|
win11 |
Windows 11 Pro | Microsoft | Fast | 6.4 GB |
win10 |
Windows 10 Pro | Microsoft | Fast | 5.8 GB |
ltsc10 |
Windows 10 LTSC | Microsoft | Fast | 4.6 GB |
win81 |
Windows 8.1 Pro | Microsoft | Fast | 4.2 GB |
win7 |
Windows 7 SP1 | Bob Pony | Medium | 3.0 GB |
vista |
Windows Vista SP2 | Bob Pony | Medium | 3.6 GB |
winxp |
Windows XP SP3 | Bob Pony | Medium | 0.6 GB |
2022 |
Windows Server 2022 | Microsoft | Fast | 4.7 GB |
2019 |
Windows Server 2019 | Microsoft | Fast | 5.3 GB |
2016 |
Windows Server 2016 | Microsoft | Fast | 6.5 GB |
2012 |
Windows Server 2012 R2 | Microsoft | Fast | 4.3 GB |
2008 |
Windows Server 2008 R2 | Microsoft | Fast | 3.0 GB |
core11 |
Tiny 11 Core | Archive.org | Slow | 2.1 GB |
tiny11 |
Tiny 11 | Archive.org | Slow | 3.8 GB |
tiny10 |
Tiny 10 | Archive.org | Slow | 3.6 GB |
L'installation
- Créez votre docker-compose.yml:
sudo nano docker-compose.yml
- Collez ça dedans en prenant soin d'adapter le port et les volumes suivant votre configuration:
version: "3"
services:
windows:
image: dockurr/windows
container_name: windows
environment:
DISK_SIZE: "50G"
RAM_SIZE: "8G"
CPU_CORES: "4"
VERSION: "win11"
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
volumes:
- /srv/appdata/windows:/storage
stop_grace_period: 2m
restart: on-failure
Petite explication. Vous avez le loisir de changer ces paramètres:
DISK_SIZE: "50G" => permet de définir la taille du disque virtuel.
RAM_SIZE: "8G" => permet de définir la quantité de RAM.
CPU_CORES: "4" => permet de définir le nombre de cœur niveau processeur.
VERSION: "win11" => indiquez la version de Windows choisie, si vous ne mettez pas cette ligne dans le docker-compose, ça sera la version 11 qui sera choisie par défaut.
- On installe l'application:
docker-compose up -d
ou avec docker-compose V2:
docker compose up -d
- Rendez-vous sur l'ip:port, suivant l'IP de votre serveur local et du port choisi, 8006 par défaut:
http://ip:8006/
Terminer l'installation et la configuration
Bien qu'il soit possible de faire une installation manuelle, voir plus bas dans le tutoriel, je vous propose la version automatique. Avec la manière automatique il faudra veiller à configurer clavier et langues une fois que tout est installé, en effet, par défaut c'est la langue anglaise et le clavier QWERTY.
Revenons à nos fenêtres.
Une fois que vous avez lancé la page web vous pour voir le processus de téléchargement de l'ISO Windows:
Il n'y a rien de particulier à faire à part patienter un peu, enfin, patienter:
Jusqu'au moment ou vous êtes sur le bureau de Windows. C'est simple, mais suivant les ressources allouées, l'installation peut-être lente:
Comment avoir le son?
temium62, sur Discord, m'avait interpelé sur le fait qu'il n'y avait pas de son quand on allait directement sur l'Ui (http://ip:8006/). Remarque judicieuse et voici la solution.
Windows
Tapez dans la recherche: mstsc
Cela va avoir pour effet d'ouvrir une fenêtre pour faire un remote desktop.
Quand cette fenêtre est ouverte vous remplissez comme ça:
- Computer: => mettez l'IP de votre serveur
- User name: => docker
CRTL + ALT + ENTER/ENTRÉE
Linux
Installez FreeRDP
Lancez cette commande dans votre terminal en prenant soin de changer l'ip par cette de votre serveur:
xfreerdp /f /u:docker /p: /v:192.168.1.152 /sound
Android
iOS
Comment pass-through un disque?
Le pass-through permet à une VM d’accéder directement au disque physique de l’hôte sans passer par l’hyperviseur.
environment:
DEVICE: "/dev/sda"
DEVICE2: "/dev/sdb"
devices:
- /dev/sda
- /dev/sdb
Comment puis-je vérifier si mon système prend en charge KVM ?
Il suffit d'exécuter ces deux commandes:
sudo apt install cpu-checker
sudo kvm-ok
Si c'est pris en charge, cela renvoie ceci:
Si vous recevez une erreur de kvm-ok indiquant que l'accélération KVM ne peut pas être utilisée, vérifiez les paramètres de virtualisation dans le BIOS.
Comment pass-through un périphérique USB ?
Pour pass-through un périphérique USB, recherchez d'abord son fournisseur et son identifiant de produit via la commande lsusb, ensuite, ajoutez-les à votre docker-compose comme ceci :
environment:
ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234"
devices:
- /dev/bus/usb
Comment attribuer une adresse IP individuelle au conteneur ?
Par défaut, le conteneur utilise un pont réseau, qui partage l'adresse IP avec l'hôte.
Si vous souhaitez attribuer une adresse IP individuelle au conteneur, vous pouvez créer un réseau macvlan comme suit :
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
Une fois que vous avez créé le réseau, modifiez votre docker-compose pour qu'il ressemble à ceci :
services:
windows:
container_name: windows
..<snip>..
networks:
vlan:
ipv4_address: 192.168.0.100
networks:
vlan:
external: true
Comment Windows peut-il acquérir une adresse IP de mon routeur ?
Après avoir configuré le conteneur pour macvlan (voir ci-dessus), il est possible que Windows fasse partie de votre réseau domestique en demandant une IP à votre routeur, tout comme vos autres appareils.
Pour activer ce mode, ajoutez les lignes suivantes à votre fichier de composition :
environment:
DHCP: "Y"
device_cgroup_rules:
- 'c *:* rwm'
Comment effectuer une installation manuelle ?
Il est préférable d'utiliser l'installation automatique, car elle optimise divers paramètres à utiliser avec ce conteneur.
Cependant, si vous insistez pour effectuer l'installation manuellement, démarrez un conteneur propre avec la variable d'environnement suivante :
environment:
MANUAL: "Y"
Comment activer Windows?
Afin que vous puissiez tester Windows dans les meilleures conditions, il y a une ligne de commande à faire dans PowerShell afin d'activer Windows.
Si vous avez une clé OEM, vous ne pourriez de toute façon pas l'utiliser ici vu que ce n'est pas le même matériel.
Par contre, regardez-moi dans les yeux et dites:
"Je le jure, je ne vais pas me servir de cette astuce pour activer des Windows en dehors du cadre instructif".
Pas de souci, je vous crois sur parole.
Pour activer Windows avec PowerShell, lancez PowerShell et copiez/collez cette commande:
irm https://massgrave.dev/get | iex
Vous arriverez à ce menu, taper 1 et laissez le processus se terminer:
Votre Windows est activé, appuyez sur n'importe quelle touche:
Tapez sur 0 pour tout quitter et fermer la fenêtre.