Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La plateforme de conteneurs Windows s’étend ! Docker était la première partie du parcours de conteneur, maintenant nous créons d’autres outils de plateforme de conteneurs.
- containerd/cri - nouveau sous Windows Server 2019/Windows 10 1809.
- runhcs - une contrepartie hôte de conteneur Windows de runc.
- hcs - le service de calcul hôte + shims pratiques pour faciliter l’utilisation.
Cet article traite de la plateforme de conteneurs Windows et Linux, ainsi que de chaque outil de plateforme de conteneurs.
Plateforme de conteneurs Windows et Linux
Dans les environnements Linux, les outils de gestion de conteneurs tels que Docker reposent sur un ensemble plus précis d’outils de conteneurs : runc et containerd.
architecture Docker
runc
est un outil en ligne de commande Linux permettant de créer et d’exécuter des conteneurs en fonction de la spécification de runtime de conteneur OCI .
containerd
est un démon qui gère le cycle de vie des conteneurs à partir du téléchargement et de la décompression de l’image conteneur vers l’exécution et la supervision du conteneur.
Sur Windows, nous avons pris une approche différente. Lorsque nous avons commencé à utiliser Docker pour prendre en charge les conteneurs Windows, nous avons créé directement sur hcS (service de calcul hôte). Ce billet de blog est plein d’informations sur la raison pour laquelle nous avons créé hcS et pourquoi nous avons pris cette approche pour les conteneurs initialement.
architecture initiale du moteur Docker
À ce stade, Docker appelle toujours directement dans le HCS. Toutefois, à l’avenir, les outils de gestion des conteneurs qui sont élargis pour inclure des conteneurs Windows et l’hôte de conteneur Windows pourraient appeler containerd et runhcs, de la même manière qu'ils appellent containerd et runc sur Linux.
runhcs
runhcs
est une duplication (fork) de runc
. Comme runc
, runhcs
est un client de ligne de commande pour l’exécution d’applications empaquetées en fonction du format OCI (Open Container Initiative) et est une implémentation conforme de la spécification Open Container Initiative.
Les différences fonctionnelles entre runc et runhcs sont les suivantes :
runhcs
s’exécute sur Windows. Il communique avec le HCS pour créer et gérer des conteneurs.runhcs
peut exécuter différents types de conteneurs.- Windows et Linux isolationHyper-V
- Conteneurs de processus Windows (l’image conteneur doit correspondre à l’hôte de conteneur)
Utilisation :
runhcs run [ -b bundle ] <container-id>
<container-id>
correspond à votre nom pour l’instance de conteneur que vous démarrez. Le nom doit être unique sur votre hôte de conteneur.
Le répertoire groupé (avec -b bundle
) est facultatif.
Comme pour runc, les conteneurs sont configurés à l’aide de paquets. Le bundle d’un conteneur est le répertoire avec le fichier de spécification OCI du conteneur, «config.json». La valeur par défaut de « bundle » est le répertoire actif.
Le fichier de spécifications OCI, «config.json», doit avoir deux champs à exécuter correctement :
- Chemin d’accès à l’espace de travail du conteneur
- Chemin d’accès au répertoire de couche du conteneur
Les commandes de conteneur disponibles dans runhcs sont les suivantes :
Outils permettant de créer et d’exécuter un conteneur
- run crée et exécute un conteneur
- create crée un conteneur
Outils pour gérer les processus en cours d’exécution dans un conteneur :
- démarrer exécute le processus défini par l’utilisateur dans un conteneur créé
- exec exécute un nouveau processus à l’intérieur du conteneur
- pause met en pause tous les processus à l’intérieur du conteneur
- reprendre reprend tous les processus qui ont été précédemment suspendus
- ps ps affiche les processus en cours d’exécution à l’intérieur d’un conteneur
Outils pour gérer l’état d’un conteneur
- state affiche l’état d’un conteneur
- kill envoie le signal spécifié (par défaut : SIGTERM) au processus d’initialisation du conteneur
- supprimer supprime toutes les ressources détenues par le conteneur souvent utilisées avec un conteneur détaché
La seule commande qui peut être considérée comme multiconteneur est liste. Il répertorie les conteneurs en cours d’exécution ou en pause, démarrés par runhcs avec la racine spécifiée.
HCS
Nous avons deux wrappers disponibles sur GitHub pour l’interface avec HCS. Étant donné que HCS est une API C, les wrappers facilitent l’appel du HCS à partir de langages de niveau supérieur.
- hcsshim - HCSShim est écrit en Go et c’est la base des runhcs. Prenez la dernière version d’AppVeyor ou générez-la vous-même.
- dotnet-computevirtualization - dotnet-computevirtualization est un wrapper C# pour HCS.
Si vous souhaitez utiliser le HCS (directement ou via un wrapper), ou si vous souhaitez créer un wrapper Rust/Haskell/InsertYourLanguage autour du HCS, laissez un commentaire.
Pour un examen plus approfondi du HCS, regardez la présentation de DockerCon par John Stark .
containerd/cri
Important
La prise en charge de CRI est disponible uniquement dans Windows Server 2019/Windows 10 1809 et versions ultérieures.
Bien que les spécifications OCI définissent un seul conteneur, CRI (interface de runtime de conteneur) décrit les conteneurs comme des charges de travail dans un environnement de bac à sable partagé appelé pod. Les pods peuvent contenir une ou plusieurs charges de travail de conteneur. Les pods permettent aux orchestrateurs de conteneurs comme Kubernetes et Service Fabric Mesh de gérer des charges de travail groupées qui doivent se trouver sur le même hôte avec certaines ressources partagées telles que la mémoire et les réseaux virtuels.
Bien que runHCS et containerd puissent tous deux gérer sur n'importe quel système Windows Server 2016 ou version ultérieure, la prise en charge des pods (groupes de conteneurs) nécessitait des modifications importantes des outils de conteneur dans Windows. La prise en charge de CRI est disponible sur Windows Server 2019/Windows 10 1809 et versions ultérieures.