Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Windows-Containerplattform wird erweitert! Docker war der erste Teil der Containerreise, jetzt erstellen wir andere Containerplattformtools.
- containerd/cri: Neu in Windows Server 2019/Windows 10 1809.
- runhcs – ein Windows-Containerhost-Gegenstück zu Runc.
- hcs: Hostcomputedienst + praktische Shims zur einfacheren Verwendung.
In diesem Artikel werden die Windows- und Linux-Containerplattform sowie jedes Containerplattformtool behandelt.
Windows- und Linux-Containerplattform
In Linux-Umgebungen basieren Containerverwaltungstools wie Docker auf einer detaillierteren Gruppe von Containertools: runc und containerd.
runc
ist ein Linux-Befehlszeilentool zum Erstellen und Ausführen von Containern gemäß der OCI-Containerlaufzeitspezifikation.
containerd
ist ein Daemon, der den Lebenszyklus von Containern vom Herunterladen und Entpacken des Containerimages bis hin zur Containerausführung und -überwachung verwaltet.
Unter Windows haben wir einen anderen Ansatz verfolgt. Bei der Arbeit mit Docker zur Unterstützung von Windows-Containern haben wir direkt auf dem HCS (Host Compute Service) aufgebaut. Dieser Blogbeitrag enthält vollständige Informationen darüber, warum wir den HCS erstellt haben und warum wir diesen Ansatz zunächst für Container verwendet haben.
Zu diesem Zeitpunkt ruft Docker weiterhin direkt in den HCS auf. In Zukunft könnten Containerverwaltungstools jedoch erweitert werden, um Windows-Container und den Windows-Containerhost einzuschließen und dabei ähnlich wie unter Linux containerd und runhcs aufzurufen.
runhcs
runhcs
ist eine Verzweigung von runc
. Wie runc
ist runhcs
ein Befehlszeilenclient zum Ausführen von Anwendungen, die gemäß dem OCI-Format (Open Container Initiative) verpackt sind und eine kompatible Implementierung der Spezifikation der Open Container Initiative ist.
Zu den funktionalen Unterschieden zwischen Runc und Runhcs gehören:
runhcs
wird unter Windows ausgeführt. Es kommuniziert mit HCS-, um Container zu erstellen und zu verwalten.runhcs
kann verschiedene Typen von Containern ausführen.- Hyper-V-Isolation unter Windows und Linux
- Windows-Prozesscontainer (Containerimage muss mit dem Containerhost übereinstimmen)
Nutzung:
runhcs run [ -b bundle ] <container-id>
<container-id>
ist Ihr Name für die Containerinstanz, die Sie starten. Der Name muss auf Ihrem Containerhost eindeutig sein.
Das Paketverzeichnis (mit -b bundle
) ist optional.
Wie bei Runc werden Container mit Bundles konfiguriert. Das Bündel eines Containers ist das Verzeichnis mit der OCI-Spezifikationsdatei des Containers, "config.json". Der Standardwert für "bundle" ist das aktuelle Verzeichnis.
Die OCI-Spezifikationsdatei "config.json" muss zwei Felder haben, um ordnungsgemäß ausgeführt zu werden:
- Ein Pfad zum temporären Speicherbereich des Containers
- Ein Pfad zum Layerverzeichnis des Containers
Containerbefehle, die in Runhcs verfügbar sind, umfassen:
Tools zum Erstellen und Ausführen eines Containers
- run erstellt einen Container und führt ihn aus.
- erstellen einen Container erstellen
Tools zum Verwalten von Prozessen, die in einem Container ausgeführt werden:
- starten, den benutzerdefinierten Prozess in einem erstellten Container ausführt
- exec führt einen neuen Prozess im Container aus.
- pause hält alle Prozesse innerhalb des Containers an.
- resume setzt alle Prozesse fort, die zuvor angehalten wurden.
- ps ps zeigt die Prozesse an, die in einem Container ausgeführt werden
Tools zum Verwalten des Zustands eines Containers
- Zustand gibt den Status eines Containers aus.
- kill sendet das angegebene Signal (Standard: SIGTERM) an den Init-Prozess des Containers.
- delete löscht alle im Container enthaltenen Ressourcen und wird häufig mit getrennten Containern verwendet.
Der einzige Befehl, der als Multicontainer betrachtet werden kann, ist Liste. Er listet ausgeführte oder angehaltene Container auf, die von runhcs mit dem angegebenen Stamm gestartet wurden.
HCS
Wir haben zwei Wrapper auf GitHub zur Schnittstelle mit dem HCS verfügbar. Da es sich bei dem HCS um eine C-API handelt, erleichtern Wrapper das Aufrufen des HCS aus Sprachen höherer Ebene.
- hcsshim - HCSShim ist in Go geschrieben und es ist die Grundlage für Runhcs. Holen Sie sich die neuesten Von AppVeyor, oder erstellen Sie es selbst.
- dotnet-computevirtualization - dotnet-computevirtualization ist ein C#-Wrapper für den HCS.
Wenn Sie den HCS (entweder direkt oder über einen Wrapper) verwenden oder einen Rust/Haskell/InsertYourLanguage Wrapper um den HCS erstellen möchten, hinterlassen Sie bitte einen Kommentar.
Für einen tieferen Einblick in das HCS sehen Sie sich die DockerCon-Präsentation von John Starkan.
containerd/cri
Wichtig
CRI-Unterstützung ist nur in Windows Server 2019/Windows 10 1809 und höher verfügbar.
Während OCI-Spezifikationen einen einzelnen Container definieren, beschreibt CRI- (Containerlaufzeitschnittstelle) Container als Arbeitslasten in einer freigegebenen Sandkastenumgebung, die als Pod bezeichnet wird. Pods können eine oder mehrere Containerworkloads enthalten. Pods sind eine Funktion von Container-Orchestratoren wie Kubernetes und Service Fabric Mesh und ermöglichen das Management von gruppierten Workloads, die sich auf demselben Host mit gemeinsam genutzten Ressourcen wie Arbeitsspeicher und vNETs befinden sollten.
RunHCS und containerd können beide auf jedem Windows-System ab Server 2016 laufen, aber die Unterstützung von Pods (Gruppen von Containern) erforderte grundlegende Änderungen an den Container-Tools in Windows. CRI-Unterstützung ist unter Windows Server 2019/Windows 10 1809 und höher verfügbar.