05/12/2025

Non classé

Dockur : découvrez comment exécuter Windows 11, Tiny 11 et macOS dans un conteneur Docker !

I. Présentation

Exécuter Windows ou macOS et pourquoi pas les deux au sein de conteneurs Docker, c'est possible ! Le projet open source Dockur rend cela possible avec une approche simple basée sur des fichiers Docker Compose.

Que ce soit pour créer un environnement de test rapide, isoler une machine Windows sans machine virtuelle classique, ou lancer macOS sans hackintosh, Dockur offre une solution originale qui combine Docker et KVM. À la lecture de ces premières lignes, certains vont trouver cela inutile, tandis que d'autres vont déjà avoir des idées plein la tête ! Je serai curieux d'avoir votre avis en commentaire !

II. Dockur : une VM dans un conteneur

Dockur est un projet open source qui encapsule un environnement QEMU/KVM dans un conteneur Docker, dans le but de faire tourner des systèmes d’exploitation complets comme Windows et macOS, dans des conteneurs. Les performances ne sont pas mises de côté, puisque vous pouvez personnaliser les ressources du conteneur et même bénéficier de l’accélération matérielle via KVM.

Ce projet est tout de même original et surprenant, puisque nous parlons d'une image complète de l'OS, ce qui est contraire au concept initial de Docker en comparaison des machines virtuelles. Ici, ce sera bien un conteneur Docker d'un point de vue technique, mais ce conteneur lance une instance QEMU qui démarre un vrai système d’exploitation avec son propre noyau, son propre système de fichiers, etc.

Dans le cadre de cette démonstration, nous allons nous intéresser aux images suivantes :

  • dockurr/windows : pour les systèmes Windows (installation automatique ou manuelle).
  • dockurr/macos : pour macOS (installation manuelle).

III. Prérequis

Vous devez disposer d'une machine prenant en charge la virtualisation matérielle (Intel VT-x ou AMD-V), comme pour n'importe quel hyperviseur. Pourquoi ? Tout simplement parce que Dockur a besoin de KVM pour fonctionner.

  • Pour une compatibilité maximale, une machine sous Linux est préférable. Pour ma part, je vais utiliser une machine sous Debian 13.
  • Docker doit être installé sur cette machine.

Si vous avez besoin d'aide pour installer Docker :

IV. Dockur : démonstration complète en vidéo

Regardez la vidéo ci-dessous pour découvrir pas à pas comment exécuter Windows et macOS dans un conteneur avec Dockur.

Au programme de cette vidéo :

  • La présentation du projet Dockur
  • L'expérience d'utilisation de Windows et macOS
  • Le déploiement d'un conteneur Windows
  • Le déploiement d'un conteneur macOS

Dans la suite de cet article, vous pourrez retrouver les ressources nécessaires, notamment les fichiers Docker Compose utilisés.

V. Déployer Windows avec Dockur

A. Fichier Docker Compose

Ci-dessous, le fichier docker-compose.yml pour déployer Windows 11 Pro par l'intermédiaire de Dockur.

services:
  windows:
    image: dockurr/windows
    container_name: windows
    environment:
      VERSION: "11"
      LANGUAGE: "French"
      REGION: "fr-FR"
      KEYBOARD: "fr"
      USERNAME: "adm_itconnect"
      PASSWORD: "P@ssword!"
      RAM_SIZE: "4G"
      CPU_CORES: "4"
      DISK_SIZE: "64G"
      GPU: "Y"
    devices:
      - /dev/kvm
      - /dev/net/tun
      - /dev/dri/renderD128
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
    volumes:
      - ./windows:/storage
    restart: always
    stop_grace_period: 2m

Si vous préférez miser sur la légèreté, vous pouvez déployer Tiny11, la version ultra-légère de Windows 11 (non officielle). Dans ce cas, utilisez ce code pour le fichier Docker Compose (anglais obligatoire) :

services:
  windows:
    image: dockurr/windows
    container_name: windows
    environment:
      VERSION: "core11"
      LANGUAGE: "ENGLISH"
      REGION: "en-US"
      KEYBOARD: "fr"
      USERNAME: "adm_itconnect"
      PASSWORD: "P@ssword!"
      RAM_SIZE: "2G"
      CPU_CORES: "2"
      DISK_SIZE: "32G"
      GPU: "Y"
    devices:
      - /dev/kvm
      - /dev/net/tun
      - /dev/dri/renderD128
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
    volumes:
      - ./windows:/storage
    restart: always
    stop_grace_period: 2m

Pour ma part, le fichier a été créé à l'emplacement suivant :

/opt/docker-compose/dockur-windows/docker-compose.yaml

Le répertoire suivant doit aussi être créé pour le stockage des données (monté via l'instruction volumes) :

sudo mkdir /opt/docker-compose/dockur-windows/windows

Pour lancer le déploiement du conteneur, exécutez cette commande :

docker compose up -d

Puis accédez à votre conteneur, et donc à votre Windows, depuis votre navigateur : http://<adresse-IP-hôte-Docker>:8006. Par défaut, le conteneur ne disposera pas de sa propre adresse IP, mais si c'est votre souhait, sachez que c'est possible (créez un réseau macvlan).

B. Choix de la version de Windows

Dockur peut déployer différentes versions de Windows et Windows Server, y compris Windows 11 et Windows Server 2025. Voici les versions actuellement prises en charge et les valeurs à utiliser, d'après le GitHub officiel du projet.

ValeurVersionTaille
11Windows 11 Pro5.4 GB
11lWindows 11 LTSC4.7 GB
11eWindows 11 Enterprise4.0 GB
10Windows 10 Pro5.7 GB
10lWindows 10 LTSC4.6 GB
10eWindows 10 Enterprise5.2 GB
8eWindows 8.1 Enterprise3.7 GB
7uWindows 7 Ultimate3.1 GB
vuWindows Vista Ultimate3.0 GB
xpWindows XP Professional0.6 GB
2kWindows 2000 Professional0.4 GB
2025Windows Server 20255.6 GB
2022Windows Server 20224.7 GB
2019Windows Server 20195.3 GB
2016Windows Server 20166.5 GB
2012Windows Server 20124.3 GB
2008Windows Server 20083.0 GB
2003Windows Server 20030.6 GB
core11Tiny 11 Core2.1 GB
tiny11Tiny 113.8 GB
tiny10Tiny 103.6 GB

C. Script post-installation

Dockur permet de personnaliser l'installation de Windows en exécutant automatiquement un script à la fin de l'installation. Pour cela, il suffit de créer un fichier nommé install.bat, qui contiendra les instructions que vous souhaitez lancer (installation de logiciels, configuration système, copie de fichiers, etc.).

Ce fichier doit être placé dans un dossier local (par exemple ./oem à créer dans le dossier dockur-windows), avec tous les fichiers nécessaires à votre script (le package MSI d'un logiciel, par exemple).

Ensuite, dans votre fichier docker-compose.yml, vous devez monter ce dossier dans le conteneur avec la directive suivante :

volumes:
      - ./windows:/storage
      - ./oem:/oem

Lors de l'installation, Dockur copiera automatiquement le contenu de ce dossier dans le répertoire C:\OEM de la machine virtuelle Windows. Le fichier install.bat y sera exécuté automatiquement, vous permettant ainsi d’automatiser des tâches de post-déploiement.

D. Connexion RDP

Vous pouvez aussi vous connecter en Bureau à distance (RDP) à votre machine Windows.

Utilisez simplement le client RDP (mstsc.exe sous Windows) de votre machine et connectez-vous sur l'adresse IP de votre hôte Docker. Le port par défaut est utilisé, à savoir le port 3389. C'est pour cette raison que nous déclarons le port 3389 au niveau du conteneur.

VI. Déployer macOS avec Dockur

A. Fichier Docker Compose

Ci-dessous, le fichier docker-compose.yml pour déployer macOS Sequoia par l'intermédiaire de Dockur.

services:
  macos:
    image: dockurr/macos
    container_name: macos
    environment:
      VERSION: "15"
    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8007:8006
      - 5900:5900/tcp
      - 5900:5900/udp
    volumes:
      - ./macos:/storage
    restart: always
    stop_grace_period: 2m

Note : nous utilisons le port 8007 au lieu du port 8006, car ce dernier est déjà occupé par le conteneur Windows. Sans cela, vous ne pouvez pas faire tourner ces deux conteneurs en même temps.

Ce fichier a été créé à l'emplacement suivant, à savoir dans un répertoire différent de celui de Windows :

/opt/docker-compose/dockur-macos/docker-compose.yaml

Le répertoire suivant doit aussi être créé pour le stockage des données (monté via l'instruction volumes) :

sudo mkdir /opt/docker-compose/dockur-macos/macos

Pour lancer le déploiement du conteneur, exécutez cette commande :

docker compose up -d

Puis accédez à votre conteneur et lancez l'installation manuellement (obligatoire avec macOS). Accédez à cette adresse depuis votre navigateur : http://<adresse-IP-hôte-Docker>:8007

B. Choix de la version de macOS

Comme pour Windows, Dockur prend en charge plusieurs versions de macOS. Vous devez ajuster la variable VERSION pour faire votre choix.

environment:
VERSION: "15"

Ci-dessous les versions actuellement supportées par Dockur :

ValeurVersionNom
15macOS 15Sequoia
14macOS 14Sonoma
13macOS 13Ventura
12macOS 12Monterey
11macOS 11Big Sur

VII. Conclusion

Dockur propose une approche originale pour faire tourner des systèmes d’exploitation complets dans des conteneurs Docker, tout en profitant des performances de KVM. Que ce soit pour Windows ou macOS, l’expérience est fluide et adaptée à des besoins de test, de formation ou même à d'autres scénarios : une intégration avec KASM étant envisageable.

Qu'en pensez-vous ? Avez-vous déjà identifié des scénarios d'utilisation ? Nous attendons vos retours en commentaire !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

12 commentaires sur “Dockur : découvrez comment exécuter Windows 11, Tiny 11 et macOS dans un conteneur Docker !

  • Est-ce qu’il est possible de faire remonter dans Windows les périphériques USB connectés à la machine physique ?

    Répondre
  • bonjour, pour mac os ,l’installation redemarre en boucle es normal?

    Répondre
    • Pour ma part il me dit que l’installation dure 8h et j’ai l’impression que ça n’avance pas beaucoup depuis que j’ai lancer l’installation il y a 2h…Sinon le reste fonctionne correctement super découverte

      Répondre
  • Personnellement un intérêt pour moi ça serait de pouvoir streamer le contenu du docker Windows sur ma tablette Android par exemple.
    Ça fait un moment que je cherche comment faire est-ce que quelqu’un a déjà essayé ?

    Répondre
  • Bonjour,

    Ne fonctionne pas, message « lost connection » et reboot en boucle

    Répondre
  • J’ai l’écransupport.apple.com/mac/startup qui s’affiche

    Répondre
  • Bonjour,
    j’ai suivi le tuto mais j’ai cette erreur
    Error response from daemon: error gathering device information while adding custom device « /dev/kvm »: no such file or directory
    je suis sur un laptop dell avec vmware et debian 13 ; je chercher mais impossible de trouvez.
    merci de vos aides.

    Répondre
  • Bonjour,
    J’ai voulu faire la manip avec dockur macos dans un docker sous windows 11.
    je reste bloqué sur la pomme (au milieu de l’avancement du boot avant le choix du DD).
    J’ai le message suivant :
    BdsDxe: failed to load Boot0001 « UEFI Misc Device » from PciRoot(0x0)/Pci(0xA,0x0): Not Found
    BdsDxe: loading Boot0002 « UEFI Misc Device 2 » from PciRoot(0x0)/Pci(0x5,0x0)
    BdsDxe: starting Boot0002 « UEFI Misc Device 2 » from PciRoot(0x0)/Pci(0x5,0x0)
    #[EB|LOG:EXITBS:END] _
    #[EB.BST.FBS|-]
    #[EB|B:BOOT]
    #[EB|LOG:HANDOFF TO XNU] _
    ======== End of efiboot serial output. ========
    Ce qui laisse penser qu’il ne trouve pas de device.

    Avez-vous une idée ?

    Répondre
  • Bonjour,
    d’un point de vue légale cette solution me semble très « limite » …
    quel est votre point de vue à ce sujet ?

    Répondre
  • Pour l’install Windows, 0 souci hormis l’activation, mais ça c’est autre chose 🙂
    Pour Mac le disque monté ne fait que 3 Go alors que j’ai encore de la place sur ma partition hôte.
    Une idée?
    sinon projet très sympa !

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.