Parce qu'il y a toujours une solution...

Depuis l’arrivée de Windows 10, vous pouvez désormais utiliser la virtualisation par conteneur grâce à Docker !

Mise à jour au 07/11/2019

Entre les machines virtuelles et les conteneurs, la virtualisation a de beaux jours devant elle. Sous les systèmes Microsoft, vous pouvez utiliser le vénérable Hyper-V ou d’autres outils comme VMware Workstation. Dès à présent, Docker est aussi là, à la rescousse !
L’installation ne se fera pas avec le logiciel Docker fournit sur le site officiel – il s’agit là d’un package en archive conçue pour Windows 10 et Windows Server.

Note : L’article est issue en grande partie d’un combo de deux documentations, entre celle de Microsoft et celle de Docker.


0. Etape préliminaire

Avant toute chose, soyez sûr d'avoir au moins un Windows 10 Professionnel en version 1709 (ou supérieur). De plus, assurez-vous d'avoir toutes les mises à jour de votre système effectuées.
La version "Home" de Windows 10 ne permet pas l'utilisation de Docker pour Windows.

Toutes les commandes pour l’installation mais aussi l’exploitation des conteneurs sur Windows doit être impérativement être saisies dans Powershell en mode Administrateur. Sans quoi, les commandes risquent de ne pas s’exécuter et vous risquez d’être bloqué par la suite.

Avant de se lancer dans cette nouvelle aventures basée sur des conteneurs, il faut auparavant installer les  fonctionnalités nécessaires au bon fonctionnement du système. Deux options sont à mettre en place, Hyper-V et les conteneurs.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Enable-WindowsOptionalFeature -Online -FeatureName containers -All

PS : L’installation d’Hyper-V est nécessaire, les conteneurs se basent indirectement sur la technologie de virtualisation d’Hyper-V pour Windows. En soit, une VM sera créée dans Hyper-V avec un Docker pré-installé.

Lorsque l’installation est terminée, il faut redémarrer l’ordinateur, sans quoi vous ne pourrez pas aller plus loin dans la procédure.


I. Installation de Docker pour Windows

La partie préparation / préliminaire est terminée, l’installation de Docker peut être initiée. Il faut récupérer les sources depuis le site officiel (hub.docker.com) puis lancer l'installation. Depuis peu, vous devrez créer un compte sur le hub.docker.com pour accéder au téléchargement.

https://hub.docker.com/editions/community/docker-ce-desktop-windows

Le fichier fait plus de 830 Mo, puisque vous téléchargez les binaires et une machine virtuelle.


II. Première utilisation

Nous y voilà enfin ! L’installation et la configuration sont des étapes désormais terminées. Pour vérifier la bonne mise en place du système, effectuez un « docker version » dans une fenêtre Powershell – vous devriez avoir ce genre de retour

Vous pouvez aussi faire un clic droit et cliquer sur "About" sur l'icône Docker dans la barre des tâches. Plutôt pas mal !
Prochaine épreuve, la récupération d’un modèle de conteneur – pour l’exemple, je vais récupérer l’image de test habituelle « hello-world ».

docker pull hello-world

Pour les plus aguerris, vous remarquerez que les commandes effectuées dans le Docker pour Windows sont les mêmes qu’un Docker traditionnel sous Linux : c’est logique, puisque ce sont les mêmes moteurs Docker, donc les mêmes commandes !

Créez votre premier conteneur via la commande suivante :

docker run --name czsCT -it hello-world

Explications :

  • «docker run » : lancement d’un conteneur
  • « - it » : cet attribut permet d’avoir un conteneur interactif : juste après la saisie de la commande, le conteneur sera accessible et vous serez « dedans ».
  • « --name czsCT » : chaque conteneur a un numéro d’identification, un ID. Vous pouvez aussi lui donner un nom (tag) pour savoir plus rapidement et instinctivement à quoi correspond votre conteneur.
  • « hello-world » : il s’agit du modèle sur lequel votre conteneur va se baser – ici, l’image d’un Nano Server.

La commande « docker ps -a » affiche la liste des conteneurs sur le système :


III. Configuration du service Docker pour Windows

Les conteneurs peuvent se lancer s'ils n'ont pas besoin d'un espace de stockage. Docker doit être configuré pour exploiter un espace d'un disque dur local de votre machine, pour avoir des contenus persistants.

Persistence des données

Ici, j'ai choisi le disque dur ayant comme lettre d'accès "E". Libre à vous de choisir un emplacement spécifique.

Si vous tentez de démarrer un conteneur sur un disque qui n'a pas été partagé via les paramètres de Docker, vous aurez l'erreur suivante :

Creating test-docker-compose_portainer_1 ... error                                                                      
ERROR: for test-docker-compose_portainer_1  Cannot create container for service portainer: b'Drive has not been shared'

ERROR: for portainer  Cannot create container for service portainer: b'Drive has not been shared'

Stockage des images "pullées" et ressources

Par défaut lors de l'installation, vous n'avez pas accès aux ressources attribuées pour Docker. Les modifications se font à postériori et vous pourrez définir ce que vous souhaitez.

Initialement, le service s'attribuera 2 vCPU et 2 Go de RAM. La limitation des ressources est à attribuer en fonction de votre machine.
Les images sont stockées en local dans "C:\ProgramData..." - naturellement, il est préférable de changer le dossier par défaut pour y avoir un accès plus rapide/plus ergonomique.

La modification de ces paramètres va faire redémarrer le service Docker - vos conteneur seront donc inaccessibles le temps du redémarrage.


IV. Et docker-compose dans tous ça ?

Vous l'avez peut-être remarqué plus haut, docker-compose est installé ! L'outil s'utilise comme sous Linux > créez un dossier où stocker les fichiers docker-compose.yml, saisissez le contenu et le tour est joué.

Les configurations, les commandes et toutes les joies de docker-compose sont exploitables sur votre docker Windows.