Logo Spiria

Activer les conteneurs Windows dans Windows 10

4 janvier 2017.
Avec la mise à jour Anniversary (soit le numéro de version 1607) de Windows 10, il est maintenant possible de créer des conteneurs Windows, qui peuvent être utilisés avec la populaire plate-forme de virtualisation Docker. Mais tout d’abord, qu’est-ce qu’un conteneur ? Pour faire simple, c’est équivalent à une machine virtuelle, avec le moins de composantes du système d’exploitation possibles.

Cela permet de créer des environnements légers, portables et isolés pour exécuter, par exemple, des serveurs Web. Auparavant, les conteneurs étaient presque tous basés sur Linux, mais depuis peu, avec la mise à jour Anniversary et la sortie de Windows Server 2016, il est possible de créer et d’utiliser des conteneurs Windows qui utilisent, entre autres, Windows Nano Server, un serveur Windows avec une très petite empreinte.

Pour activer la fonctionnalité de conteneurs, il faut d’abord s’assurer que votre version de Windows 10 soit Pro ou Enterprise.

Ensuite, il faut activer les fonctionnalités Windows containers et Microsoft-Hyper-V avec les commandes suivantes dans une session PowerShell élevée avec les droits d’administrateur :

Enable-WindowsOptionalFeature -Online -FeatureName containers –All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

À noter : il faut refuser de redémarrer l’ordinateur après avoir activé la première fonctionnalité, et le redémarrer après avoir activé la deuxième.

Après le redémarrage, il faut télécharger et installer Docker. Voici comment faire à partir de la ligne de commande :

$version = (Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/docker/docker/master/VERSION).Content.Trim() Invoke-WebRequest "https://master.dockerproject.org/windows/amd64/docker-$($version).zip" -OutFile "$env:TEMP\docker.zip" -UseBasicParsing

Expand-Archive -Path "$env:TEMP\docker.zip" -DestinationPath $env:ProgramFiles

Pour éviter des erreurs et des étapes à répéter pour chaque nouvelle session PowerShell, il est préférable d’ajouter le répertoire Docker à la variable d’environnement Path avec la commande ci-dessous. Il faut ensuite fermer et ouvrir une nouvelle session PowerShell pour que la variable Path modifiée soit prise en compte.

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

Pour terminer l’installation de Docker, il faut l’ajouter en service Windows avec les commandes suivantes :

dockerd --register-service
Start-Service Docker

L’étape suivante, afin de pouvoir créer des conteneurs Windows, est d’installer l’image de base de Windows Nano Server, avec cette commande :

docker pull microsoft/nanoserver

Cette commande va télécharger l’image sur l’ordinateur. Cela peut être vérifié en exécutant docker images.

Finalement, il est maintenant temps de tester le tout en créant son propre conteneur à partir d’une image existante. Pour commencer, toujours dans une session PowerShell avec les droits d’administration, il faut exécuter les commandes suivantes, qui vont démarrer un conteneur à partir d’une image existante et y ajouter un script PowerShell « Hello World » de base.

docker run -it microsoft/nanoserver cmd
powershell.exe Add-Content C:\helloworld.ps1 'Write-Host "Hello World"'
exit

Par la suite, il s’agit de créer une nouvelle image pour utilisation future à partir du conteneur modifié. Pour ce faire, il faut commencer par prendre en note l’ID du conteneur en exécutant docker ps -a dans PowerShell pour montrer une liste des conteneurs en exécution. Le conteneur le plus récent (et à ce point de l’article, le seul) devrait être celui qui va être enregistré avec la commande suivante, en remplaçant avec l’ID approprié :

docker commit  helloworld

Une fois cette commande exécutée, le conteneur modifié est maintenant enregistré comme une image, ce qui peut être vérifié en exécutant docker images.

Pour conclure, il ne reste plus qu’à démarrer le nouveau conteneur helloworld avec cette commande :

docker run --rm helloworld powershell c:\helloworld.ps1

Si tout s’est bien déroulé lors de l’exécution des commandes comprises dans cet article, « Hello World » devrait apparaître dans l’interface de commande, signifiant que le conteneur s’est bel et bien exécuté comme prévu. Maintenant que tout est installé, la porte est ouverte pour tester plus en profondeur les conteneurs Windows, avec des sites Web ASP.NET, entre autres.