Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur virtuel, qui pourra être exécuté sur n’importe quel serveur Windows 2016. Sur Windows 2016 Docker est une fonctionnalité nommée « container ».
Voyons par exemple comment monter un container exécutant un serveur IIS au sein d’un hyperviseur Windows 2016 TP3:
Il faut tout d’abord télécharger un script de configuration chez MS au traver de la commande PowerShell suivante:
1 |
wget -uri http://aka.ms/setupcontainers -OutFile C:\ContainerSetup.ps1 |
Une fois téléchargé on l’exécute afin de créer une machine virtuelle qui sera notre serveur de container:
Ce script télécharge une image de Windows 2016 TP3 préconfigurée. Comme cela est un peu long, il est possible de télécharger cette image et de donner au script d’installation le chemin sur un disque local
.\New-ContainerHost.ps1 -VmName CHostDocker -Password P@ssw0rd -vhdpath « S:\WindowsServer_en-us_TP3_Container_VHD.zip » -SwitchName SW1
Des lors la VM est disponible et accessible au travers d’une console RDP:
Arrivé a ce niveau on a le clavier en querty ce qui n’est pas pratique : un ctrl-alt-fin permet de faire apparaître le gestionnaire des taches ( notez qu’il n’y a pas d’interface graphique…)
Avec le task manager un lance une console PowerShell pour executer les commandes suivantes:
Set-WinUserLanguageList fr-FR -Force
A partir de la 2 méthodes sont disponibles pour créer un container:
PowerShell
Docker.exe
Il faut savoir que les containers créé par PowerShell de sont pas manageable par docker.exe et vice-versa.
Ici nous traiterons la méthode PowerShell:
Les containers sont basés sur des images. L’image de base fournie se nomme WindowsServerCore.
Dans un premier temps on créé le container basé sur une image Windows 2016: On peut récupérer la liste des images avec un Get-ContainerImage
Notre container sera connecté au réseau au travers d’un virtual-switch contenu dans notre VM Hôte qui fait par défaut du NAT (un VSwitch dans une VM, ça fait bizarre la première fois 🙂 ).
Le nom par défaut du VSwitch est « Virtual Switch « :
On créé donc ce nouveau container:
Reste a démarrer ce container:
Une fois démarré il ne reste plus qu’a ouvrir une session dessus:
On est bien es remote session PowerShell !
L’adresse IP de notre container en 172.16.0.2 est bien différente de notre hôte en 172.16.0.1 qui sert de passerelle naté !
Maintenant installons IIS:
On installe IIS avec la commande Install-WindowsFeature -Name Web-Server
Le serveur web installé , on créé explicitement une règle de translation:
Puis on ouvre le pare-feu pout laisser passer le protocole http:
Voila ! le container IIS est disponible:
Ce qui est intéressent c’est le temps de démarrage d’un container : moins de 6 secondes sur un simple PC
Redémarrer un serveur web devient maintenant acceptable 🙂
Pingback: Les containers dans Windows 2016 (Suite) - Vecteur IT