Tutoriel Vidéo Docker VM Docker sur Hyper-V

Vous l'ignorez peut-être, mais Windows, depuis sa version 7 intègre un outil de virtualisation appellé Hyper-V (disponible dans les versions professionnelles du système d'exploitation). Cet outil, similaire à Virtual Box ou à VMWare, permet de créer et de gérer des machines virtuelles.
Rien de plus à installer, Hyper-V est un service assez léger qui peut être manipulé soit par une interface graphique (Console MMC) soit par ligne de commande en PowerShell. Outre l'avantage de sa légèreté et de sa mise en œuvre, du fait qu'Hyper-V est un service directement intégré dans Windows, vous pouvez, si vous le souhaitez carrément faire booter votre ordinateur sur votre machine virtuelle. Chose qui peut être utile lorsque l'on souhaite tester un environnement complet en utilisant toutes les ressources de son PC sans aucune restriction sans avoir à faire de dual boot ou de tripatouiller LILO ou GRUB pour le cas d'un système sous Linux. Vous pouvez aussi lire et monter à la volée les disques durs virtuels issus d'Hyper-V directement sur Windows par un simple clic, mais on n'en est pas encore là et ça fera l'objet d'un autre tutoriel si celui-ci vous a plu.

Aujourd’hui, dans cette première approche, nous allons voir comment activer Hyper-V, modifier sommairement sa configuration et créer une machine virtuelle en utilisant docker-machine qui intègre un driver pour Hyper-V.

Attention, ce tuto ne fonctionne qu’avec une version professionnelle de Windows (7/ 8 / 8.1 / 10), les versions familiales et home en étant dépourvues.

Activation d'Hyper-V

Par défaut, le service Hyper-V n’est pas activé sur Windows.
Avant de l’activer, il vous faut vérifier que le processeur de votre ordinateur accepte la virtualisation et que celle-ci est bien activée ; pour ce faire, faites un clic droit sur une zone vierge de la barre des tâches et choisissez «Gestionnaire des tâches »

Dans l’onglet « Performance » de ce dernier, assurez-vous que Virtualisation est bien activée.

Si ce n’est pas le cas, vous devrez vous rendre dans votre BIOS et trouver l'option « CPU-Virtualization » et la passer à ENABLED.

Une fois cette petite vérification faite, nous allons activer Hyper-V. Pour cela, faites un clic droit sur le bouton « Windows » puis sélectionnez « Programmes et Fonctionnalités

Sur la fenêtre qui s’ouvre, cliquez sur Activer ou désactiver des fonctionnalités Windows

Sur la liste des fonctionnalités, cochez :

  • Hyper-V
  • Windows PowerShell

Cliquez ensuite sur OK et redémarrez votre ordinateur.
Hyper-V est maintenant activé sur votre PC.

Préparation du commutateur virtuel

Lancez le gestionnaire Hyper-V en appuyant simultanément sur la touche Windows + Q *, tapez *Hyper-V** dans la zone de recherche et sélectionnez Gestionnaire Hyper-V. La console MMC du gestionnaire s'ouvre.

Nous allons modifier maintenant quelques paramètres sur Hyper-V, de telles sortes à pouvoir se connecter à Internet depuis une VM.
Cliquez sur Gestionnaire de commutateur virtuel

Choisissez Externe puis cliquez sur créer le commutateur
Tapez le nom que vous voulez puis sous réseau externe, sélectionnez la carte réseau sur laquelle la VM pourra se connecter et terminez en cliquant successivement sur les boutons Appliquer et OK.

Pour Windows 8.1 UNIQUEMENT, cliquez sur Paramètres Hyper-V. Dans la partie gauche, cliquez sur Mode de session étendu et cochez la case Utiliser le mode de session étendu

Installation de la machine virtuelle

Une fois ces paramètres modifiés, nous allons maintenant créer notre machine virtuelle. Il est possible d'utiliser l'iso de boot2docker et de procéder à une installation manuelle, mais le processus est un petit peu pénible et peut être simplifier grâce à l'utilisation de doker-machine qui est un outil qui permet d'installer rapidement un VM supportant docker (en utilisant boot2docker), mais qui à l'avantage de supporter tout un tas de systèmes et qui permet en plus d'avoir plusieurs VM qui tourne en simultanées.

Docker machine peut être installé automatiquement en utilisant le nouvel outil de Docker : Docker Toolbox. Une fois cette boite à outils installée (pensez à décocher l'installation de VirtualBox), vous devriez être en mesure de taper la commande docker-machin dans votre terminal (plus d'information sur la documentation).

Une fois la commande disponible vous êtes en mesure de créer rapidement une VM avec la commande suivante

docker-machine create -d <nom du driver> <nom de la VM>
# Dans notre cas :
docker-machine create -d hyper-v dev

Cette commande va nous permettre de créer une machine virtuelle en utilisant le driver pour monter la machine virtuelle dev sur Hyper-V et tout configurer pour vous. Une fois la création terminée vous pourrez vous connecter à votre nouvelle machine en utilisant les commandes docker-machine

docker-machine start dev
docker-machine ssh dev
docker-machine stop dev
docker-machine ip dev
docker-machine rm dev

Partage de dossier avec Windows

Dans notre cas on veut pouvoir utiliser notre VM comme machine pour faire fonctionner notre environnement de développement par exemple. Dans ce cas-là il faut être en mesure de partager un dossier avec la VM. On choisira ici de partager un dossier depuis notre machine physique vers notre machine virtuelle.

Contrairement à VirtualBox, Hyper-V n'intègre pas un outil pour partager simplement un dossier, il va donc nous falloir passer par le partage Windows traditionnel. Côté hôte, on va partager le dossier que l'on souhaite rendre accessible sur notre VM. Pour cela il vous suffit de faire un clic droit sur votre dossier puis d'aller dans les propriétés puis dans partage. Vous n'avez pas forcément besoin d'ajouter des utilisateurs à cette étape, et vous pouvez activer le partage avec seulement votre compte principal

Une fois le partage activé vous devriez obtenir son chemin réseau

Dans mon cas le dossier se situe donc à la racine et est accessible en tapant \\JONATHAN\Sites, mais est aussi accessible sur le réseau interne en tapant l'IP de ma machine \\192.168.0.50\Sites. Il est important que vous ayez une IP locale fixe pour la suite de l'opération, car si l'IP de votre machine change sur le réseau à chaque redémarrage il sera impossible de configurer un partage facilement.

Pour monter ce dossier sur la VM on va utiliser un montage cifs

sudo mount -t cifs //192.168.0.50/Sites /var/www -o username=jonathan,password=monmotdepasse,dir_mode=0777,file_mode=0777,uid=1000,gid=100

Attention, si vous utilisez un compte Microsoft pour votre machine le nom d'utilisateur sera votre email et votre mot de passe sera celui de votre compte.

J'ai été un petit peu violent sur les permissions de ce dossier pour éviter les éventuels problèmes de permissions posés par certains scripts PHP, mais vous pouvez changer suivant votre cas. SI vous souhaitez que ce montage se fasse automatiquement il vous suffit de copier cette commande dans votre fichier /var/lib/boot2docker/bootlocal.sh.