Test rapide des conteneurs Windows

Stanislas a très bien introduit le sujet, aussi j'en profite pour entrer directement dans le vif du sujet. Je vous propose ici une procédure rapide d'installation des conteneurs Windows sur un serveur Windows Server 2016 TP3 existant. Vous trouverez toutes les procédures couvrant tous les scénarios utiles (VM Azure, VM locale, serveur local...) sur le site fort complet ici :

https://msdn.microsoft.com/virtualization/windowscontainers/containers_welcome

Sur le site en question les procédures Windows utilisent des scripts PowerShell fournis par Microsoft qui font le travail à votre place. Je me suis intéressé à une installation manuelle de la fonctionnalité sur une machine TP3 existante, de façon à mieux comprendre la chose. Voici donc comment faire "à la main" :

Tout d'abord, il faut télécharger l'image WIM présente avec l'image ISO de Windows Server 2016 TP3, disponible ici. Cette image WIM se nomme :

CBaseOs_th2_release_10514.0.150808-1529_amd64fre_ServerDatacenterCore_en-us.wim

Ne pensez pas que vous pouvez faire l'économie de ce téléchargement de presque 3 Go, cette image WIM sert d'image de base pour les conteneurs Windows que vous allez créer.

Vous pouvez utiliser un serveur physique ou une machine virtuelle, du moment que le système est Windows Server 2016 Technical Preview 3. Vous pouvez rester en mode core, ou installer l'interface graphique si vous préférez. J'avoue que c'est ce que j'ai fait, parce que ma machine de test est une machine physique portable.

Ouvrez un PowerShell administrateur et commencez par installer la fonctionnalité Containers :

Add-WindowsFeature Containers

Créez un switch de type NAT. C'est un nouveau type de switch pour les conteneurs, et je lui donne ici le même nom et la même plage d'IP que ce qui est fait dans les scripts par défaut :

New-VmSwitch "Virtual Switch" -SwitchType NAT -NatSubnetAddress "172.16.0.0/12"

Préparation d'une image de base à partir de l'image WIM dont je parlais précédemment :

$Wim = "C:\images\CBaseOs_th2_release_10514.0.150808-1529_amd64fre_ServerDatacenterCore_en-us.wim"

Install-ContainerOsImage -WimPath $Wim -Force

Vérifiez la liste des images de conteneurs disponibles :

Get-ContainerImage

A ce stade vous avez un hôte de conteneurs Windows fonctionnel. Reste à créer un premier conteneur :

New-Container -Name "MyContainer" -ContainerImageName WindowsServerCore -SwitchName "Virtual Switch"

Windows Containers

Démarrez le conteneur :

Start-Container -Name MyContainer

Ouvrez une session PowerShell sur le conteneur :

$id = (Get-Container -Name MyContainer).Id

Enter-PSSession -ContainerId $id -RunAsAdministrator

Pour aller plus loin, vous pouvez explorer les commandes PowerShell du module Containers.

Voici également quelques exemples de commandes pour créer, démarrer, arrêter, supprimer plusieurs conteneurs :

Créer 20 conteneurs :

for($i=1; $i -le 20; $i++){New-Container -Name MyContainer$i -ContainerImageName WindowsServerCore -SwitchName "Virtual Switch"}

Démarrer tous les conteneurs :

Get-Container | Start-Container

Arrêter tous les conteneurs :

Get-Container | Stop-Container

Supprimer tous les conteneurs (attention !) :

for($i=1 ; $i -le 20 ; $i++){Remove-Container -Name MyContainer$i -Force}

Je devine la question qui hante le lecteur qui est arrivé jusqu'ici : et Docker dans tout ça ? Bonne question. Pour faire simple, disons que PowerShell est une interface de gestion des conteneurs Windows, et que Docker en est une autre. Avec la TP3, Docker est fonctionnel, mais toutes ses fonctions  ne sont pas encore opérationnelles. Mon expérience est que pour l'installer, mieux vaut s'appuyer sur les scripts d'installation fournis, car la mise en place du service est un peu délicate. Voici comment j'ai procédé sur mon serveur de test :

Récupérez le binaire de Docker dans System32 :

wget -Uri https://aka.ms/ContainerTools -OutFile $env:windir\System32\docker.exe -UseBasicParsing

Utilisez le script fourni par Microsoft pour installer le service Docker, avec l'option -WimPath pour utiliser l'image WIM locale et éviter de la retélécharger :

wget -Uri https://aka.ms/setupcontainers -OutFile Install-ContainerHost.ps1 -UseBasicParsing

.\Install-ContainerHost.ps1 -WimPath C:\images\CBaseOs_th2_release_10514.0.150808-1529_amd64fre_ServerDatacenterCore_en-us.wim

Après, vous pouvez utiliser docker.exe depuis PowerShell ou cmd.exe. Notez simplement que l'intégration n'est pas encore complète dans la TP3. Par exemple, les conteneurs créés dans PowerShell ne sont pas visibles dans Docker, et réciproquement.

Bonnes expérimentations !