> Server > Premiers pas avec les conteneurs Windows

Premiers pas avec les conteneurs Windows

Server - Par Loïc Thobois - Publié le 28 avril 2016

J'ai eu le plaisir lors d'un précèdent billet de vous présenter les concepts et usages des containers Docker en attendant leur implémentation sous Windows.

Premiers pas avec les conteneurs Windows

Microsoft ayant sorti depuis Windows Server 2016 Technical Preview 3 incluant les Windows Containers, il est maintenant temps de découvrir les premières étapes de l'implémentation.

Déploiement des conteneurs Windows. Actuellement, il est possible d’exploiter les technologies de conteneurs de trois manières différentes.

• Dans Azure à l’aide d’une machine virtuelle dédiée Il suffit pour cela de sélectionner le modèle Windows Server Container Preview on Windows Server 2016 Technical Preview 3 Core Installation. Voir figure 1.

 (((IMG8328)))

• En créant une nouvelle machine virtuelle Hyper-V dédiée à l’aide d’un script fourni par Microsoft qui va automatiser le téléchargement et la configuration de la machine. La nouvelle machine virtuelle va s’appuyer sur l’édition Core de Windows Server 2016. Pour télécharger le script, il suffit de taper dans une invite PowerShell :

wget -uri https://aka.ms/newcontainerhost -OutFile New-
ContainerHost.ps1

Et il suffit ensuite de le lancer à l’aide de la commande

suivante :

.\New-ContainerHost.ps1 –VmName <containerhost> -Password
<password>

• En configurant une machine virtuelle existante ou un serveur physique à l’aide d’un script par Microsoft qui va télécharger et configurer les composants nécessaires. Pour télécharger le script, il suffit de taper dans une invite PowerShell :

wget -uri https://aka.ms/setupcontainers -OutFile
ContainerSetup.ps1

 Et il suffit ensuite de le lancer à l’aide de la commande suivante : ContainerSetup.ps1

Architecture et administration de la plateforme

Un certain nombre de composants sont nécessaires au bon fonctionnement de la plateforme, en voici une liste non exhaustive des plus importants. Le fichier dockerfile qui contient l’ensemble des commandes pour construire une image dont il automatise la création. Le dépôt Registry / Docker Hub permet de stocker les images qui serviront à instancier des conteneurs. Docker propose ainsi un dépôt public avec Docker Hub qui peut être lié à une source GitHub afin d’intégrer la génération de conteneur dans le processus d’intégration continu. L’administration de l’environnement Docker peut se faire à partir de deux outils d’administration en ligne de commande à savoir l’outil Docker client historique et les cmdlets dédiés de l'environnement PowerShell.

L’administration à l’aide de l’outil en ligne de commande Docker

• Le client Docker propose une quarantaine de commandes pour réaliser les opérations d’administration courantes.

• L’avantage de cet outil est qu’il est standardisé avec ses équivalents sous Linux et MacOS X.

• Les scripts déjà existants sur les autres plateformes seront donc réutilisables sous Windows.

• Attention toutefois, autant les scripts de déploiement seront identiques, autant il faudra «packager» un conteneur spécifique pour chacune des plateformes cibles.

• L’ensemble des communications client / serveur se fait avec des appels en REST protégé ou pas avec du TLS ce qui permet d’administrer les environnements Linux et MacOS X à partir de la version Windows. Les commandes les plus importantes étant :

• docker images : qui liste des images de conteneur présent sur l’hôte.

REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
wincore latest 9eca9231f4d4 30 hours ago
9.613 GB

• docker run -it --name demo wincore cmd : qui va créer un nouveau conteneur appelé demo à partir de

l’image wincore puis lancer une invite de commande dans cet environnement.

• docker ps –a : qui liste les conteneurs présents sur l’hôte.

 

CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
4f496dbb8048 wincore «cmd” 2 minutes ago Exited
(0) 2 minutes ago demo

• docker commit demo newimage : qui va créer une nouvelle image d’un conteneur à partir du conteneur demo un peu à la manière d’un cliché instantané. 

• docker rm demo : qui supprime un conteneur.

• docker rmi newimage : qui supprime une image d’un conteneur.

• docker build -t webapp C:\build\webapp : qui va construire le conteneur webapp à partir des paramètre du fichier de configuration C:\build\webapp\ dockerfile.

 

L’administration à l’aide des cmdlets PowerShell. L’avantage de cet outil est qu’il bénéficie de la puissance de l’environnement PowerShell qui permettra notamment d’intégrer dans un seul script les paramètres de configuration des conteneurs mais aussi de l’environnement extérieur (réseau, stockage, sécurité, ...).

 

Les commandes les plus importantes étant :

• Get-Command -Module containers : qui liste l’ensemble des cmdlets liées aux conteneurs Windows.

• Get-ContainerImage : qui liste des images de conteneurs présents sur l’hôte.

 

Name Publisher Version IsOSImage
---- --------- ------- ---------
WinCore CN=Microsoft 10.0.10514.0 True

 

• $container = New-Container -Name «Demo» -ContainerImageName WinCore -SwitchName «Virtual Switch»: qui va créer un nouveau conteneur appelé Demo à partir de l’image WinCore puis renvoie dans la variable $container le lien vers le nouveau conteneur.

• Get-Container : qui liste les conteneurs présents sur l’hôte.

 

Name State Uptime ParentImageName
---- ----- ------ ---------------
Demo Off 00:00:00 WinCore

 

• Start-Container -Name «Demo» : qui démarre le conteneur Demo.

• Enter-PSSession -ContainerId $container.ContainerId -RunAsAdministrator : qui se connecte au conteneur identifié dans la variable $container.

• Stop-Container -Name «Demo» : qui stoppe l’exécution du conteneur Demo.

• Get-ContainerImage -Name Demo | Remove-ContainerImage -Force : qui supprime le conteneur Demo.

• $webserverimage = New-ContainerImage –Container $container -Publisher Demo -Name webapp –Version 1.0 : qui va construire l’image webapp puis renvoie dans la variable $webserverimage le lien vers la nouvelle image.

Téléchargez gratuitement cette ressource

Guide de services Azure pour le développement d’applications

Guide de services Azure pour le développement d’applications

Ce guide détaille divers scénarios adaptés au cloud, et plus particulièrement au développement d'applications à l'aide des services de plateforme disponibles sur Microsoft Azure. Découvrez l'étendue de la plateforme Azure et de ses services et apprenez comment l’utiliser rapidement selon le type d’application.

Server - Par Loïc Thobois - Publié le 28 avril 2016