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.
![](https://blog.ikoula.com/sites/default/files/images/blog_docker.jpg)
I. Préparation de la VM
Nos tests sont fait sur une VM de génération 2, 4Go 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) :
![](https://blog.ikoula.com/sites/default/files/images/blog/01_blog_dockeriserIIS_windows_setup.png)
Une fois l’installation terminée, on configure rapidement la VM pour nous donner un accès en RDP :
On tape « start sconfig » afin de lancer l’outil de configuration de l’OS core :
![](https://blog.ikoula.com/sites/default/files/images/blog/02_blog_dockeriserIIS_start_sconfig.png)
De là on configure selon nos besoins.
II. Installation de Docker et de ses prérequis
On commence par installer la fonctionnalité « containers » avec la commande « install-windowsfeature containers » :
![](https://blog.ikoula.com/sites/default/files/images/blog/03_blog_dockeriserIIS_powershell.png)
On reboot la machine.
On installe 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, on télécharge et on installe le script pour le service Docker :
Invoke-WebRequest https://aka.ms/tp5/Update-Container-Host -OutFile update-containerhost.ps1
.\update-containerhost.ps1
![](https://blog.ikoula.com/sites/default/files/images/blog/04_blog_dockeriserIIS_powershell_2.png)
Nous avons maintenant Docker installé et fonctionnel :
![](https://blog.ikoula.com/sites/default/files/images/blog/05_blog_dockeriserIIS_cmd.png)
III. Utilisation de Docker
On peut ensuite créer un containeur basé sur l’une des images :
docker run --name Test01 -it windowsservercore:10.0.14300.1000 cmd
Avec cette commande un nouveau container nommé test01 basé sur l’image windowsservercore sera déployé.On sera automatiquement connecté avec une invite de commande dessus.
Une fois sur ce container on peut installer par exemple un serveur web IIS :
![](https://blog.ikoula.com/sites/default/files/images/blog/06_blog_dockeriserIIS_install_web_server.png)
Et maintenant nous créons une image depuis ce container :
docker commit Test01 windowsservercoreweb
![](https://blog.ikoula.com/sites/default/files/images/blog/07_blog_dockeriserIIS_test01.png)
A présent on peut déployer depuis cette image et obtenir un container avec un IIS pré installé :
![](https://blog.ikoula.com/sites/default/files/images/blog/08_blog_dockeriserIIS_docker_run.png)
Suite à cela, si on accède à l’ip du serveur hôte par un navigateur web, on arrivera sur la page IIS par défaut du container.
IV. 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 webs installés et configurés. Nous utiliserons donc les containers 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)
On commence 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 :
![](https://blog.ikoula.com/sites/default/files/images/blog/08_blog_dockeriserIIS_mkdir.png)
Coté Docker, nous allons créer une autre image, sur la base de l’image web, mais dans laquelle nous auront reconfiguré IIS afin qu’il pointe vers un dossier vide de notre choix. Pour cela, on démarre un container depuis l’image qu’on a créé dans le chapitre précédent et on exécute les commandes suivantes en Powershell :
Import-Module WebAdministration
Set-ItemProperty 'IIS:\Sites\Default Web Site' -name physicalpath -value c:\site01
Puis on le commit dans une nouvelle image qu’on appellera « windowsservercorewebmod »On lance ensuite deux containers en mappant les ports 81 (pour site 1) et 82 (pour 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.
![](https://blog.ikoula.com/sites/default/files/images/blog/09_blog_dockeriserIIS_run_name_1.png)
docker run --name ikoula-web01 -p 81:80 -v C:\Users\Administrator\Documents\site1\:C:\site01 -dit windowsservercorewebmod
![](https://blog.ikoula.com/sites/default/files/images/blog/10_blog_dockeriserIIS_run_name_2.png)
docker run --name ikoula-web02 -p 82:80 -v C:\Users\Administrator\Documents\site2\:C:\site01 -dit windowsservercorewebmod
On peut voir qu’on a mis « -dit » à la fin, afin que ceux-ci soient montés détachés.Si on se rend sur les sites, on peut voir que pour chaque container on a bien le bon fichier :
![](https://blog.ikoula.com/sites/default/files/images/blog/11_blog_dockeriserIIS_hello.png)
Tags: