Apprendre à installer des instances IIS sous Docker grâce à Windows server 2016

Johan Delattre

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.

Pour réagir à ce tutoriel, un espace de dialogue vous est proposé sur le forum : Commentez

- Titre : Apprendre à installer des instances IIS sous Docker grâce à Windows server 2016

- Auteur : Johan Delattre

- Parution : 27 mai 2016

- Licence : Copyright ® 2016 Johan Delattre. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Préparation de la VM

- III. Installation de Docker et de ses prérequis

- IV. Utilisation de Docker

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

- VI. Conclusion

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) :

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 :

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 » :

Nous relançons la machine.

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

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 :

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

.\update-containerhost.ps1

Nous avons maintenant Docker installé et fonctionnel :

IV - Utilisation de Docker

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

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 :

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

docker commit Test01 windowsservercoreweb

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

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 :

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 :

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.

docker run --name ikoula-web01 -p 81:80 -v C:\Users\Administrator\Documents\site1\:C:\site01 -dit windowsservercorewebmod

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 :

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.