Aller au contenu

Exécuter macOS sur Linux avec Docker et KVM

logo docker

Voilà une idée qui va vous paraître un peu folle : Faire tourner MacOS sur une machine Linux et cela, depuis une image Docker. C’est ce que propose le projet Docker-OSX disponible sur GitHub depuis quelques semaines.

Ça tombe très bien, car je voulais me faire une idée de MacOS avant de demander ma prochaine machine de travail. En effet, au départ je voulais acheter un MacBook Pro d’occasion, mais je vais en faire l’économie grâce à ce projet.

Docker OSX Macos

Prérequis pour installer Docker-OSX

Il faut que sur la machine Linux soit installé KVM et Docker. Sur une machine à base de Redhat :

Terminal window
sudo dnf install @virtualization

Il faut un processeur avec au moins 8 cores. Attention Docker-OSX prend beaucoup de place : 40 Go si ne vous voulez pas de persistance et 200 Go. Pour la mémoire 8 Go sur la machine est un minimum dont 4 Go pour MacOS.

Lancement de Docker-OSX

L’image Docker-OSX prend tout en charge, même le téléchargement de l’outil d’installation de MacOS. Pour que l’installation soit persistante i

Voici la ligne de commande pour installer MacOS Catalina.

Terminal window
docker run -it \
--device /dev/kvm \
-p 50922:10022 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=${DISPLAY:-:0.0}" \
sickcodes/docker-osx:latest

Pour installer MacOS Big Sur, il faudra remplacer le nom de l’image par sickcodes/docker-osx:big-sur.

On peut aussi lancer une version préinstallée de Catalina, ce qui ira plus vite :

Terminal window
# 40GB disk space required: 20GB original image 20GB your container.
docker pull sickcodes/docker-osx:auto
# boot directly into a real OS X shell with a visual display [NOT HEADLESS]
docker run -it \
--device /dev/kvm \
-p 50922:10022 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=${DISPLAY:-:0.0}" \
-e GENERATE_UNIQUE=true \
sickcodes/docker-osx:auto
# username is user
# passsword is alpine

Pour ajouter des ressources il suffit d’ajouter les extra-vars suivant à la ligne de commande : -e RAM=8G -e CPU_STRING=8

Ensuite comme indiqué on peut se connecter à la machine via une SSH avec le user user et mot de passe alpine via le port 50922.

Vous pouvez utiliser également VNC pour accéder à l’interface graphique de MacOS.

Pour le moment je n’ai pas réussi à le faire fonctionner sur ma VM Linux de mon PC tournant sur Windows, mais cela doit car il existe des instructions pour le faire depuis WSL. Si je trouve je mettrais à jour le billet.