Definieren von Windows Server- und Hyper-V-Containern und Isolationsmodi
Der Windows Server-Administrator von Contoso muss wissen, wie Container unter Windows Server ausgeführt werden und wie die Isolation von Laufzeitumgebungen erreicht wird (Prozessisolations- und Hyper-V-Isolationsmodi). Außerdem muss der Administrator wissen, wie die verschiedenen Isolationsmodi ausgeführt werden und unter welchen Umständen die verschiedenen Isolationsmodi geeignet oder erforderlich sind.
Isolationsmodi
Windows Server kann Container in einem Modus von zwei verschiedenen Isolationsmodi ausführen. Beide Modi unterstützen identische Prozesse zum Erstellen, Verwalten und Ausführen von Containern. Es gibt jedoch einen Unterschied zwischen dem Isolationsgrad, der für den Container bereitgestellt wird, und folglich der Sicherheit zwischen dem Container, anderen Containern und dem Hostbetriebssystem.
Windows Server unterstützt die folgenden Containerisolationsmodi:
Prozessisolierung. Container, die im Modus Prozessisolation ausgeführt werden, können als Windows Server-Container bezeichnet werden.
Hyper-V-Isolation. Container, die im Modus Hyper-V-Isolation ausgeführt werden, können als Hyper-V-Container bezeichnet werden.
Prozessisolationsmodus für Windows Server-Container
Im Prozessisolationsmodus, dem üblichen Isolationsmodus für Windows Server-Container, können auf einem Host mehrere Containerinstanzen gleichzeitig ausgeführt werden. Bei der Ausführung in diesem Modus teilen sich die Container untereinander und mit dem Hostbetriebssystem denselben Kernel. Jeder bereitgestellte Container verfügt über einen eigenen Benutzermodus, damit Windows- und App-Prozesse von anderen Containern isoliert ausgeführt werden. Wenn Sie Windows-Container so konfigurieren, dass der Prozessisolationsmodus verwendet wird, können Container mehrere Apps isoliert auf demselben Computer ausführen. Sie bieten jedoch keine sicherheitsoptimierte Isolation.
Hinweis
Bei Docker handelt es sich um eine Reihe von Open-Source-Tools, Open-Source-Lösungen und cloudbasierten Diensten, die ein allgemeines Modell für das Packen (auch als Containerisierung bezeichnet) von App-Code in einer standardisierten Einheit für die Softwareentwicklung bereitstellen. In der nächsten Lektion finden Sie weitere Informationen über Docker und Containerruntimes.
Wenn Sie einen neuen Container starten, kommuniziert Docker (oder die Standardruntime) mit den Computediensten, um einen neuen Container zu erstellen, der auf einem Image basiert. Für jeden Container erstellt Docker einen Windows-Container. Für jeden Windows-Container sind mehrere Systemprozesse erforderlich, die in jedem Container immer identisch sind. Sie können dann Ihren eigenen Anwendungsprozess verwenden, um die einzelnen Container voneinander zu unterscheiden. Dazu können Sie ein Anwendungsframework wie .NET, eine Windows Server-Komponente wie Internetinformationsdienste (IIS) oder ein Framework oder Prozesse von Drittanbietern verwenden, die Sie im Container ausführen.
Hyper-V-Isolationsmodus für Hyper-V-Container
Wenn sich Container Kernel und Arbeitsspeicher teilen, besteht die Möglichkeit, dass eine Anwendung aus der Sandboxumgebung ausbricht und versehentlich eine schädliche Aktion durchführt, wenn ein Sicherheitsrisiko von einem Angreifer ausgenutzt wird. Um dies zu vermeiden, bietet Windows eine alternative Methode für die sicherere Ausführung von Containern, den Modus Hyper-V-Isolation, der auch als Hyper-V-Container bezeichnet werden.
Beim Hyper-V-Isolationsmodus wird jeder Container in einer hochgradig optimierten VM ausgeführt. Der Vorteil des Hyper-V-Isolationsmodus besteht darin, dass jeder Container im Grunde über einen eigenen Kernel verfügt, der ein höheres Maß an Stabilität und Sicherheit bietet. Die VM bietet eine zusätzliche Isolationsschicht auf Hardwareebene zwischen den einzelnen Containern und dem Hostcomputer. Bei der Bereitstellung wird ein Container beim Hyper-V-Isolationsmodus in wenigen Sekunden gestartet, d. h. wesentlich schneller als eine VM mit einem vollständigen Windows-Betriebssystem.
Hinweis
Windows-basierte Container, die unter Windows Server ausgeführt werden, verwenden standardmäßig den Prozessisolationsmodus. Windows-basierte Container, die unter Windows 10 Pro und Enterprise ausgeführt werden, verwenden standardmäßig den Hyper-V-Isolationsmodus.
Die folgende Grafik enthält einen Vergleich der Architekturen von Windows Server- und Hyper-V-Containern und deren Isolationsmodi. Die Grafik veranschaulicht, dass der Windows-Kernel des Hosts vom Hostbenutzermodus und von Windows Server gemeinsam verwendet wird. In diesem gemeinsam verwendeten Kernel wird eine VM ausgeführt, in der sich ein Hyper-V-Container befindet. Der Hyper-V-Container verfügt über einen eigenen Windows-Kernel, der nicht gemeinsam verwendet ist.
Achtung
Der Prozessisolationsmodus in Windows 10 ist lediglich für Entwicklungs- und Testzwecke vorgesehen. Ab dem Oktober 2018-Update für Windows 10 können Benutzer, die über einen Windows 10 Pro- oder Enterprise-Host verfügen, einen Windows-Container im Prozessisolationsmodus ausführen. Benutzer*innen müssen den Prozessisolationsmodus direkt über den Parameter --isolation=process anfordern. Auf dem Host muss Windows 10 Build 17763 oder höher ausgeführt werden, und Sie müssen über ein Docker-Modul mit der Version 18.09 oder höher verfügen.
Wichtig
Da der Windows Server-Container und das Hostbetriebssystem den Kernel gemeinsam verwenden, müssen Sie sicherstellen, dass die Versionsmarkierungen für den Host und den Containerimage übereinstimmen, da andernfalls der Container nicht gestartet werden kann oder unbestimmtes Verhalten aufweist. Hyper-V-Container können alternativ zum Ausführen älterer Containerimages auf neueren Hosts verwendet werden. Beispiel: Ein Windows Server 2019-Image auf einem Windows Server 2022-Host funktioniert nur mit Hyper-V-Isolation.
Angeben eines Isolationsmodus mit einem Docker-Befehl
Docker und Containerruntimes werden in der nächsten Lerneinheit ausführlicher behandelt. In diesem Kontext müssen wir lediglich wissen, dass Docker mehrere Befehle umfasst, die zum Erstellen von Containern verwendet werden können. Wenn Sie einen Container mithilfe von Docker erstellen, können Sie den Isolationsmodus über den Parameter --isolation und entweder den Prozessisolationsmodus oder den Hyper-V-Isolationsmodus angeben:
- Verwenden Sie den folgenden Befehl, um einen Container mit dem Prozessisolationsmodus zu erstellen:
docker run -it --isolation=process mcr.microsoft.com/windows/servercore:ltsc2019 cmd
- Verwenden Sie den folgenden Befehl, um einen Container mit dem Hyper-V-Isolationsmodus zu erstellen:
docker run -it --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019 cmd`
Verwendung von Hyper-V-Containern oder Windows Server-Containern
Bei der Entscheidung, ob Hyper-V-Container oder Windows Server-Container verwendet werden sollen, müssen Vertrauen, Sicherheit und Isolation als Faktoren berücksichtigt werden. Sie sollten Hyper-V-Container in folgenden Fällen verwenden:
Eine Anwendung benötigt einen dedizierten Windows-Kernel.
Aus folgenden Gründen ist eine Anwendungsvertrauensstellung erforderlich:
Das Hostbetriebssystem kann der ausgeführten Anwendung nicht vollständig vertrauen.
Anwendungen, die gleichzeitig auf demselben Host ausgeführt werden, können sich möglicherweise nicht gegenseitig vertrauen.
Es ist eine höhere Sicherheit erforderlich.
Es ist eine größere Isolation erforderlich.
Einige dieser Entscheidungen können durch folgende Szenarien beeinflusst werden:
Cloudanbieter. Wenn Hardwareressourcen geteilt und genutzt werden, gelten möglicherweise alle oben erwähnten Faktoren für Workloads, die von verschiedenen Kunden ausgeführt werden.
Konformitätsrichtlinien. Möglicherweise müssen Sie Sicherheits-, Daten- oder andere Richtlinien einhalten, die eine Isolation und größere Sicherheit in den Workloads und ausgeführten Anwendungen vorschreiben.
Laufzeitumgebungen (Entwicklungs-, Test- oder Produktionsumgebungen). In Entwicklungs-oder Testumgebungen ist u. U. keine zusätzliche Isolation erforderlich, was aber in Produktionsszenarien der Fall sein kann. Möglicherweise verfügen Sie auch über eine verteilte Anwendung in einem Microservices-Modell. Verschiedene Containerworkloads in der Microservices-Anwendungsarchitektur weisen möglicherweise unterschiedliche Isolationsanforderungen auf, die ggf. beachtet werden müssen.
Achtung
Nicht alle Orchestrierungsdienste, z. B. Kubernetes, unterstützen Hyper-V-Container. Wenn Hyper-V-Container nicht unterstützt werden, aber eine größere Isolation erforderlich ist, müssen Sie möglicherweise auf einen vollständigen virtuellen Computer zugreifen, um eine Reihe von Containern auszuführen, die parallel ausgeführt werden können.