Windows und ContainerWindows and containers

Bei Containern handelt es sich um eine Technologie zum Verpacken und Ausführen von Windows- und Linux-Anwendungen, die in verschiedenen Umgebungen lokal und in der Cloud eingesetzt werden können.Containers are a technology for packaging and running Windows and Linux applications across diverse environments on-premises and in the cloud. Container stellen eine schlanke, isolierte Umgebung bereit, in der Apps einfacher entwickelt, bereitgestellt und verwaltet werden können.Containers provide a lightweight, isolated environment that makes apps easier to develop, deploy, and manage. Container werden schnell gestartet und beendet. Sie eignen sich daher ideal für Apps, die sich schnell an einen sich ändernden Bedarf anpassen müssen.Containers start and stop quickly, making them ideal for apps that need to rapidly adapt to changing demand. Die schlanke Natur von Containern macht sie auch zu einem nützlichen Tool zum Erhöhen der Dichte und Auslastung Ihrer Infrastruktur.The lightweight nature of containers also make them a useful tool for increasing the density and utilization of your infrastructure.

Abbildung, die zeigt, wie Container in der Cloud oder lokal ausgeführt werden können, wobei monolithische Apps oder in nahezu jeder Sprache geschriebene Microservices unterstützt werden.

Das Microsoft-ContainerökosystemThe Microsoft container ecosystem

Microsoft bietet eine Reihe von Tools und Plattformen, die Sie beim Entwickeln und Bereitstellen von Apps in Containern unterstützen:Microsoft provides a number of tools and platforms to help you develop and deploy apps in containers:

  • Führen Sie Windows-oder Linux-basierte Container unter Windows 10 für Entwicklung und Tests mit Docker Desktop aus. Dabei werden in Windows integrierte Containerfunktionen verwendet.Run Windows-based or Linux-based containers on Windows 10 for development and testing using Docker Desktop, which makes use of containers functionality built-in to Windows. Sie können Container auch nativ unter Windows Server ausführen.You can also run containers natively on Windows Server.

  • Entwickeln, Testen, Veröffentlichen und Bereitstellen von Windows-basierten Containern mithilfe der leistungsfähigen Containerunterstützung in Visual Studio und Visual Studio Code, die Unterstützung für Docker, Docker Compose, Kubernetes, Helm und andere nützliche Technologien umfasst.Develop, test, publish, and deploy Windows-based containers using the powerful container support in Visual Studio and Visual Studio Code, which include support for Docker, Docker Compose, Kubernetes, Helm, and other useful technologies.

  • Veröffentlichen Sie Ihre Apps als Containerimages auf dem öffentlichen DockerHub, damit sie von anderen Benutzern verwendet werden können, oder in einer privaten Azure Container Registry für eigene Entwicklung und Bereitstellung durch Ihre Organisation, indem Sie Push- und Pullvorgänge direkt in Visual Studio und Visual Studio Code durchführen.Publish your apps as container images to the public DockerHub for others to use, or to a private Azure Container Registry for your org's own development and deployment, pushing and pulling directly from within Visual Studio and Visual Studio Code.

  • Stellen Sie Container im richtigen Maßstab in Azure oder anderen Clouds bereit:Deploy containers at scale on Azure or other clouds:

    • Pullen Sie Ihre App (Containerimage) aus einer Containerregistrierung, z.B. aus Azure Container Registry, und stellen Sie sie dann im richtigen Maßstab mithilfe eines Orchestrators (etwa Azure Kubernetes Service (AKS) (als Vorschau für Windows-basierte Apps verfügbar) oder Azure Service Fabric) bereit, und verwalten Sie sie.Pull your app (container image) from a container registry, such as the Azure Container Registry, and then deploy and manage it at scale using an orchestrator such as Azure Kubernetes Service (AKS) (in preview for Windows-based apps) or Azure Service Fabric.
    • Azure Kubernetes Service stellt Container auf virtuellen Azure-Computern bereit und verwaltet sie im richtigen Maßstab unabhängig davon, ob es sich um Dutzende, Hunderte oder sogar Tausende von Containern handelt.Azure Kubernetes Service deploys containers to Azure virtual machines and manages them at scale, whether that's dozens of containers, hundreds, or even thousands. Die virtuellen Azure-Computer führen entweder ein benutzerdefiniertes Windows Server-Image (wenn Sie eine Windows-basierte App bereitstellen) oder ein benutzerdefiniertes Ubuntu Linux-Image (wenn Sie eine Linux-basierte App bereitstellen) aus.The Azure virtual machines run either a customized Windows Server image (if you're deploying a Windows-based app), or a customized Ubuntu Linux image (if you're deploying a Linux-based app).
  • Stellen Sie Container lokal mithilfe von Azure Stack mit der AKS-Engine (als Vorschau mit Linux-Containern verfügbar) oder Azure Stack mit OpenShift bereit.Deploy containers on-premises by using Azure Stack with the AKS Engine (in preview with Linux containers) or Azure Stack with OpenShift. Sie können Kubernetes auch selbst unter Windows Server einrichten (siehe Kubernetes unter Windows). Außerdem arbeiten wir an Unterstützung für die Ausführung von Windows-Containern auf der RedHat OpenShift-Containerplattform.You can also set up Kubernetes yourself on Windows Server (see Kubernetes on Windows), and we're working on support for running Windows containers on RedHat OpenShift Container Platform as well.

Funktionsweise von ContainernHow containers work

Ein Container ist ein isoliertes, schlankes Silo zum Ausführen einer Anwendung auf dem Hostbetriebssystem.A container is an isolated, lightweight silo for running an application on the host operating system. Container bauen auf dem Kernel des Hostbetriebssystems auf (der als die verborgene Struktur des Betriebssystems betrachtet werden kann), wie in dieser Abbildung gezeigt.Containers build on top of the host operating system's kernel (which can be thought of as the buried plumbing of the operating system), as shown in this diagram.

Architekturabbildung, die zeigt, wie Container über dem Kernel ausgeführt werden.

Auch wenn ein Container den Kernel des Hostbetriebssystems ebenfalls verwendet, erhält der Container keinen uneingeschränkten Zugriff darauf.While a container shares the host operating system's kernel, the container doesn't get unfettered access to it. Stattdessen erhält der Container eine isolierte (und in einigen Fällen virtualisierte) Ansicht des Systems.Instead, the container gets an isolated–and in some cases virtualized–view of the system. Ein Container kann z.B. auf eine virtualisierte Version des Dateisystems und der Registrierung zugreifen, aber alle Änderungen wirken sich nur auf den Container aus und werden verworfen, wenn er beendet wird.For example, a container can access a virtualized version of the file system and registry, but any changes affect only the container and are discarded when it stops. Zum Speichern von Daten kann der Container permanenten Speicher einbinden, z.B. einen Azure-Datenträger oder eine Dateifreigabe (einschließlich Azure Files).To save data, the container can mount persistent storage such as an Azure Disk or a file share (including Azure Files).

Ein Container basiert auf dem Kernel, aber der Kernel stellt nicht alle APIs und Dienste bereit, die eine App ausführen muss – die meisten dieser Komponenten werden von Systemdateien (Bibliotheken) bereitgestellt, die über dem Kernel im Benutzermodus ausgeführt werden.A container builds on top of the kernel, but the kernel doesn't provide all of the APIs and services an app needs to run–most of these are provided by system files (libraries) that run above the kernel in user mode. Da ein Container von der Benutzermodusumgebung des Hosts isoliert ist, benötigt der Container seine eigene Kopie dieser Benutzermodus-Systemdateien, die in ein als Basisimage bezeichnetes Paket gepackt werden.Because a container is isolated from the host's user mode environment, the container needs its own copy of these user mode system files, which are packaged into something known as a base image. Das Basisimage dient als grundlegende Ebene, auf der Ihr Container erstellt wird, und stellt Betriebssystemdienste für ihn bereit, die nicht vom Kernel bereitgestellt werden.The base image serves as the foundational layer upon which your container is built, providing it with operating system services not provided by the kernel. Wir werden Containerimages später ausführlicher erläutern.But we'll talk more about container images later.

Container im Vergleich zu virtuellen ComputernContainers vs. virtual machines

Im Gegensatz zu einem Container führt ein virtueller Computer (VM) ein vollständiges Betriebssystem (einschließlich seines eigenen Kernels) aus, wie diese Abbildung zeigt.In contrast to a container, a virtual machine (VMs) runs a complete operating system–including its own kernel–as shown in this diagram.

Architekturabbildung, die zeigt, wie VMs ein vollständiges Betriebssystem neben dem Hostbetriebssystem ausführen.

Container und virtuelle Computer haben jeweils einen eigenen Verwendungszweck: In der Tat verwenden viele Implementierungen von Containern virtuelle Computer als Hostbetriebssystem, anstatt direkt auf der Hardware ausgeführt zu werden, insbesondere wenn Container in der Cloud ausgeführt werden.Containers and virtual machines each have their uses–in fact, many deployments of containers use virtual machines as the host operating system rather than running directly on the hardware, especially when running containers in the cloud.

Weitere Informationen zu den Ähnlichkeiten und Unterschieden dieser sich ergänzenden Technologien finden Sie unter Container im Vergleich zu virtuellen Computern.For more details on the similarities and differences of these complementary technologies, see Containers vs. virtual machines.

ContainerimagesContainer images

Alle Container werden aus Containerimages erstellt.All containers are created from container images. Containerimages sind eine Sammlung von Dateien, die in einem Stapel von Schichten organisiert sind. Sie befinden sich auf Ihrem lokalen Computer oder in einer Remotecontainerregistrierung.Container images are a bundle of files organized into a stack of layers that reside on your local machine or in a remote container registry. Das Containerimage besteht aus den Benutzermodus-Betriebssystemdateien, die zur Unterstützung Ihrer App, aller Laufzeiten und Abhängigkeiten Ihrer App erforderlich sind, sowie aus anderen Konfigurationsdateien, die Ihre App für die ordnungsgemäße Ausführung benötigt.The container image consists of the user mode operating system files needed to support your app, your app, any runtimes or dependencies of your app, and any other miscellaneous configuration file your app needs to run properly.

Microsoft bietet mehrere Images (als Basisimages bezeichnet), die Sie als Ausgangspunkt für das Erstellen eines eigenen Containerimages verwenden können:Microsoft offers several images (called base images) that you can use as a starting point to build your own container image:

  • Windows: Enthält den vollständigen Satz der Windows-APIs und Systemdienste (ausgenommen Serverrollen).Windows - contains the full set of Windows APIs and system services (minus server roles).
  • Windows Server Core: Ein kleineres Image, das eine Teilmenge der Windows Server-APIs enthält (nämlich die vollständige Version von .NET Framework).Windows Server Core - a smaller image that contains a subset of the Windows Server APIs–namely the full .NET framework. Es umfasst auch die meisten Serverrollen, aber leider nicht den Faxserver.It also includes most server roles, though sadly to few, not Fax Server.
  • Nano Server: Das kleinste Windows Server-Image mit Unterstützung für die .NET Core-APIs und einige Serverrollen.Nano Server - the smallest Windows Server image, with support for the .NET Core APIs and some server roles.
  • Windows 10 IoT Core: Eine Version von Windows, die von Hardwareherstellern für kleine IoT-Geräte verwendet wird, auf denen ARM- oder x86/x64-Prozessoren ausgeführt werden.Windows 10 IoT Core - a version of Windows used by hardware manufacturers for small Internet of Things devices that run ARM or x86/x64 processors.

Wie bereits erwähnt, bestehen Containerimages aus einer Reihe von Schichten.As mentioned earlier, container images are composed of a series of layers. Jede Schicht enthält einen Satz von Dateien, die das Containerimage darstellen, wenn Sie überlagert werden.Each layer contains a set of files that, when overlaid together, represent your container image. Aufgrund der überlagerten Natur von Containern müssen Sie nicht immer ein Basisimage zum Erstellen eines Windows-Containers als Ziel verwenden.Because of the layered nature of containers, you don't have to always target a base image to build a Windows container. Stattdessen können Sie ein anderes Image als Ziel verwenden, das das gewünschte Framework bereits enthält.Instead, you could target another image that already carries the framework you want. Das .NET-Team veröffentlicht z.B. ein .NET Core-Image, das die .NET Core-Laufzeit enthält.For example, the .NET team publishes a .NET core image that carries the .NET core runtime. Die Benutzer müssen die Installation von .NET Core daher nicht duplizieren – stattdessen können Sie die Schichten dieses Containerimages wiederverwenden.It saves users from needing to duplicate the process of installing .NET core–instead they can reuse the layers of this container image. Das .NET Core-Image selbst basiert auf Nano Server.The .NET core image itself is built based upon Nano Server.

Weitere Informationen finden Sie unter Containerbasisimages.For more details, see Container Base Images.

ContainerbenutzerContainer users

Container für EntwicklerContainers for developers

Container helfen Entwicklern, Apps mit höherer Qualität schneller zu entwickeln und auszuliefern.Containers help developers build and ship higher-quality apps, faster. Mit Containern können Entwickler ein Containerimage erstellen, das innerhalb von Sekunden identisch in Umgebungen bereitgestellt werden kann.With containers, developers can create a container image that deploys in seconds, identically across environments. Container fungieren als einfache Methode, um Code für mehrere Teams freizugeben und eine Entwicklungsumgebung zu starten, ohne dass sich dies auf das Hostdateisystem auswirkt.Containers act as an easy mechanism to share code across teams and to bootstrap a development environment without impacting your host filesystem.

Container sind portabel und vielseitig einsetzbar, können in jeder Sprache geschriebene Apps ausführen und sind mit jedem Computer kompatibel, auf dem Windows 10 (Version 1607 oder höher) oder Windows Server 2016 oder höher ausgeführt wird.Containers are portable and versatile, can run apps written in any language, and they're compatible with any machine running Windows 10, version 1607 or later, or Windows Server 2016 or later. Entwickler können einen Container lokal auf ihrem Laptop oder Desktop erstellen und testen und dann das gleiche Containerimage in der privaten Cloud ihres Unternehmens, einer öffentlichen Cloud oder über einen Dienstanbieter bereitstellen.Developers can create and test a container locally on their laptop or desktop, and then deploy that same container image to their company's private cloud, public cloud, or service provider. Die natürliche Agilität von Containern unterstützt moderne Muster für die Entwicklung von Apps in großen, virtualisierten Cloudumgebungen.The natural agility of containers supports modern app development patterns in large-scale, virtualized cloud environments.

Container für IT-ExpertenContainers for IT professionals

Mithilfe von Containern können Administratoren eine Infrastruktur erstellen, die einfacher zu aktualisieren und zu verwalten ist und die Hardwareressourcen besser nutzt.Containers help admins create infrastructure that's easier to update and maintain, and that more fully utilizes hardware resources. IT-Experten können Container verwenden, um standardisierte Umgebungen für ihre Entwicklungs-, Qualitätssicherungs- und Produktionsteams bereitzustellen.IT professionals can use containers to provide standardized environments for their development, QA, and production teams. Mithilfe von Containern können Systemadministratoren Unterschiede bei Betriebssysteminstallationen und der zugrunde liegenden Infrastruktur abstrahieren.By using containers, systems administrators abstract away differences in operating system installations and the underlying infrastructure.

ContainerorchestrierungContainer orchestration

Orchestratoren sind beim Einrichten einer containerbasierten Umgebung ein wichtiger Teil der Infrastruktur.Orchestrators are a critical piece of infrastructure when setting up a container-based environment. Obwohl Sie einige Container manuell mithilfe von Docker und Windows verwalten können, nutzen Apps häufig fünf, zehn oder sogar Hunderte von Containern, für die Orchestratoren eingesetzt werden.While you can manage a few containers manually using Docker and Windows, apps often make use of five, ten, or even hundreds of containers, which is where orchestrators come in.

Containerorchestratoren wurden entwickelt, um die Verwaltung von Containern im richtigen Maßstab und in der Produktion zu erleichtern.Container orchestrators were built to help manage containers at scale and in production. Orchestratoren stellen Funktionen für Folgendes bereit:Orchestrators provide functionality for:

  • Bereitstellung im richtigen MaßstabDeploying at scale
  • Planung der WorkloadWorkload scheduling
  • SystemüberwachungHealth monitoring
  • Failover bei einem KnotenausfallFailing over when a node fails
  • Zentrales Hoch- oder HerunterskalierenScaling up or down
  • NetzwerkNetworking
  • DienstermittlungService discovery
  • Koordinieren von App-UpgradesCoordinating app upgrades
  • ClusterknotenaffinitätCluster node affinity

Es gibt viele verschiedene Orchestratoren, die Sie mit Windows-Containern verwenden können. Im Folgenden finden Sie die von Microsoft bereitgestellten Optionen:There are many different orchestrators that you can use with Windows containers; here are the options Microsoft provides:

Testen von Containern unter WindowsTry containers on Windows

Informationen zu den ersten Schritten mit Containern unter Windows Server oder Windows 10 finden Sie in den folgenden Ressourcen:To get started with containers on Windows Server or Windows 10, see the following:

Hilfe bei der Entscheidung, welche Azure-Dienste für Ihr Szenario geeignet sind, finden Sie unter Azure Container Services und Auswählen, welche Azure-Dienste zum Hosten Ihrer Anwendung verwendet werden sollten.For help deciding which Azure services are right for your scenario, see Azure container services and Choosing what Azure services to use to host your application.