I. Introduction

L'année dernière, nous avions publié sur la compatibilité d'Ikoula avec Docker.

Dans l'objectif d'aller toujours plus loin avec les nouvelles technologies, les équipes R&D d'Ikoula ont testé Docker avec Windows Serveur 2016 Technical Preview 5.

Nous allons décrire dans cet article la mise en place d'une machine virtuelle Windows Server 2016 TP5 avec docker ainsi que son utilisation.

II. Préparation de la VM

Nos tests sont faits sur une VM de génération 2, 4 Go de RAM, 4 vCPU et avec accès Internet.

L'installation de la VM se fait très simplement, on choisit avant tout Windows Server 2016 Standard Technical Preview 5 (qui sera donc une VM CORE) :

Image non disponible

Une fois l'installation terminée, nous configurons rapidement la VM pour nous donner un accès en RDP.

Nous saisissons « start sconfig » afin de lancer l'outil de configuration de l'OS core :

Image non disponible

De là nous configurons selon nos besoins.

III. Installation de Docker et de ses prérequis

Nous commençons par installer la fonctionnalité « containers » avec la commande « install-windowsfeature containers » :

Image non disponible

Nous relançons la machine.

Nous installons les images d'OS qui seront utilisées plus tard : Nano Server et Windows Server Core

 
Sélectionnez
Install-PackageProviderContainerImage -Force
Install-ContainerImage-Name WindowsServerCore
Install-ContainerImage-Name NanoServer

Suite à cela, nous téléchargeons et installons le script pour le service Docker :

 
Sélectionnez
Invoke-WebRequest https://aka.ms/tp5/Update-Container-Host -OutFile update-containerhost.ps1

.\update-containerhost.ps1
Image non disponible

Nous avons maintenant Docker installé et fonctionnel :

Image non disponible

IV. Utilisation de Docker

Nous pouvons ensuite créer un conteneur basé sur l'une des images :

 
Sélectionnez
docker run --name Test01 -it windowsservercore:10.0.14300.1000 cmd

Avec cette commande, un nouveau conteneur nommé test01 basé sur l'image windowsservercore sera déployé.

Nous serons automatiquement connectés avec une invite de commande dessus.

Une fois sur ce conteneur, nous pouvons installer par exemple un serveur web IIS :

Image non disponible

Et maintenant, nous créons une image depuis ce conteneur :

 
Sélectionnez
docker commit Test01 windowsservercoreweb
Image non disponible

À présent, nous pouvons déployer depuis cette image et obtenir un conteneur avec un IIS préinstallé  :

 
Sélectionnez
PS C:\Users\Administrator\Documents> docker run -name ikoula-web01 -p 80:80 -it windowsservercoreweb cmd

Suite à cela, si nous accédons à l'adresse IP du serveur hôte par un navigateur web, nous arrivons sur la page IIS par défaut du conteneur.

V. Allons plus loin (cas pratique d'utilisation)

Pour aller plus loin, nous allons maintenant imaginer que sur la machine hôte, nous créons des sites web.

Nous voulons continuer de développer nos sites sur l'hôte, sans pour autant y avoir des serveurs web installés et configurés. Nous utiliserons donc les conteneurs pour cette partie.

Ces sites sont créés dans des dossiers locaux, à savoir dans notre exemple : C:\users\administrator\Documents\siteX (où X est un numéro)

Nous commençons par créer nos deux dossiers (avec les droits adéquats) avec chacun une page HTML dedans pour pouvoir vérifier que notre configuration fonctionnera bien :

Image non disponible

Côté Docker, nous allons créer une autre image, sur la base de l'image web, mais dans laquelle nous aurons reconfiguré IIS afin qu'il pointe vers un dossier vide de notre choix. Pour cela, nous démarrons un conteneur depuis l'image que nous avons créée dans le chapitre précédent et nous exécutons les commandes suivantes en Powershell :

 
Sélectionnez
Import-Module WebAdministration
Set-ItemProperty 'IIS:\Sites\Default Web Site' -name physicalpath -value c:\site01

Puis, nous effectuons le « commit » dans une nouvelle image que nous appellerons « windowsservercorewebmod ».

Nous lançons ensuite deux conteneurs en mappant les ports 81 (pour le site 1) et 82 (pour le site 2) vers les ports 80 de ceux-ci, et en montant les répertoires des sites vers le répertoire que nous avons configuré plus tôt dans IIS.

 
Sélectionnez
docker run --name ikoula-web01 -p 81:80 -v C:\Users\Administrator\Documents\site1\:C:\site01 -dit windowsservercorewebmod
 
Sélectionnez
docker run --name ikoula-web02 -p 82:80 -v C:\Users\Administrator\Documents\site2\:C:\site01 -dit windowsservercorewebmod

On peut voir que nous avons mis « -dit » à la fin, afin que ceux-ci soient montés détachés.

Si nous nous rendons sur les sites, nous pouvons voir que pour chaque conteneur, nous avons bien le bon fichier :

Image non disponible

Nous pouvons maintenant modifier nos fichiers sur notre serveur hôte et faire nos tests en direct grâce aux services web qui tournent sur les conteneurs. Nous pouvons éteindre les conteneurs, les rallumer au moment du test par exemple.

VI. Conclusion

Source Ikoula : ici

Nous tenons à remercier Claude Leloup pour sa relecture orthographique et Malick SECK pour la mise au gabarit.