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.