Alles, was Sie wissen müssen

Die Containerisierung ermöglicht es Unternehmen, das Betriebssystem zu virtualisieren und Anwendungen in isolierten Regionen, sogenannten Containern, zu installieren.

Containerisierung ist eine moderne Art der Anwendungserstellung.

Lassen Sie uns untersuchen, wie das Legacy-System und seine Architektur bis zu dem Punkt auf eine Hürde stießen, an dem die Leute anfingen zu zitieren: „Mein Code funktioniert nicht; Keine Ahnung warum! Code funktioniert, aber nicht sicher warum!“

Als die Anwendung wuchs, änderte sich die Definition einer Anwendung von nur einem Stück Code zu einem Satz von Code, Binärdateien, Konfigurationen und einer laufenden Umgebung.

Stellen Sie sich eine Situation vor, in der wir in unseren früheren Tagen häufig waren. Auf dem Laptop hat der Entwickler Java-8-Code entwickelt. Derselbe Code funktionierte nicht auf einem Webserver/einer VM. Nach langer Fehlersuche wurde festgestellt, dass die Java-Version des Servers JDK11 war.

Verwirrt?

Der Code blieb gleich, aber die Software, die den Code unterstützt, hatte eine andere Konfiguration. Aufgrund einer Kleinigkeit gerieten die Entwickler in große Schwierigkeiten. Dasselbe gilt für die Übertragung eines Codes von Linux auf das Windows-Betriebssystem.

Der Verwaltungsaufwand, die Skalierbarkeit und die Kostenineffizienz des Legacy-Systems führten zur Einführung von Cloud Computing, bei dem die Arbeitslast auf VMs gehostet wurde, die von verschiedenen Cloud-Anbietern bereitgestellt wurden. Das ist nichts anderes als Virtualisierung.

Bei Virtualisierung handelt es sich, vereinfacht gesagt, um mehrere Betriebssysteme (OS) auf einem einzigen Server/einer einzelnen VM, die vom Cloud-Anbieter/Rechenzentrum bereitgestellt werden. Durch die Virtualisierung werden Anwendungen isoliert, ohne dass physische Hardware erforderlich ist oder der Inhalt bekannt sein muss.

Diese Architektur hat sich jedoch auch nicht bewährt, und Containerisierung kam ins Spiel.

Die Containerisierung konzentriert sich darauf, Betriebssysteme in Blöcke zu zerlegen, die durch ihr Betriebssystem effizienter genutzt werden können. Es ist eine kleine Mini-Umgebung, in der Anwendungscode ausgeführt wird, ohne sich Gedanken über das Betriebssystem oder die Hardware zu machen, die in der VM ausgeführt werden.

Lassen Sie uns nun die Containerisierung im Detail besprechen.

Was ist Containerisierung?

Die Containerisierung ist eine Art Betriebssystemvirtualisierung, bei der alle Komponenten der Anwendung, einschließlich der Umgebung, auch bekannt als das Betriebssystem, in dem sie ausgeführt wird, in isoliertem Bereich auf der VM, den so genannten Containern, verpackt werden. Das zugrunde liegende Betriebssystem für diese Container ist das gleiche, aber sie haben ihr eigenes als Teil ihrer Konfiguration.

  8 kostenlose Bildkomprimierungstools zur Steigerung der Website-Geschwindigkeit

Container sind keine umfangreichen, schweren Systeme. Stattdessen sind sie klein, tragbar und einfach zu betreiben oder einzurichten. Wenn ein Entwickler eine App containerisiert, wird der Container vom Hostbetriebssystem getrennt und hat eingeschränkten Zugriff auf die Ressourcen des Systems, wie eine einfache virtuelle Maschine. Die containerisierte Anwendung kann auf verschiedenen Infrastrukturen wie Bare Metal, der Cloud oder VMs ausgeführt werden, ohne dass sie neu geschrieben werden muss.

Wie funktioniert die Containerisierungstechnologie?

Die Containerisierung funktioniert, indem alle Teile, die eine Anwendung benötigt, in einer einzigen virtuellen Einheit zusammengefasst werden.

Durch die Containerisierung können Entwickler den Anwendungscode mit seinen Konfigurationsdateien, Abhängigkeiten und Bibliotheken bündeln. Trennen Sie dieses einzelne Softwarepaket (den Container) vom Host-Betriebssystem. Die Verpackung lässt den Container allein stehen und wird tragbar, sodass er problemlos auf jeder Plattform oder Cloud ausgeführt werden kann. Betrachten Sie es als ein kleines Lego-Stück von einem Lego-Brett.

Container verwenden jedoch keine direkt virtualisierten Hardware- oder Kernel-Ressourcen. Container kümmern sich nicht um das Betriebssystem, das auf VMs ausgeführt wird.

Stattdessen werden Container „auf“ einer Plattform ausgeführt, die speziell für die Handhabung von Containern entwickelt wurde und die zugrunde liegenden Ressourcen verbirgt. Container sind Alternativen wie virtuellen Maschinen und Bare-Metal-Servern in Geschwindigkeit und Größe überlegen, da sie nur die wichtigsten Komponenten und Abhängigkeiten einer Anwendung enthalten. Sie ermöglichen auch die Ausführung derselben Anwendung in verschiedenen Kontexten, ohne sich mit den damit verbundenen Problemen zu befassen.

Containerisierung vs. Virtualisierung

Personen, die sich mit dem Anwendungslebenszyklus nicht auskennen, kennen nicht immer den Unterschied zwischen Containerisierung, die Software wie Docker macht, und traditioneller Servervirtualisierung (was Hypervisoren wie HyperV und VMware ESXi ermöglichen). Hier ist jedoch, was den Unterschied ausmacht:

Bei der Servervirtualisierung wird die Hardware versteckt und ein Betriebssystem darauf ausgeführt. Containerisierung ist eine Möglichkeit, eine App auf einem Betriebssystem auszuführen. Die Virtualisierung hängt vom zugrunde liegenden Host-Betriebssystem ab, kümmert sich jedoch nicht um die Hardware, es sei denn, sie verfügt über genügend Ressourcen. Hier ist eine vollständige Liste der Unterschiede.

PropertyContainerizationVirtualizationEnvironmentContainers sind mit einem Betriebssystem gepackt, das in mehreren Umgebungen ausgeführt wird. Die Virtualisierung baut auf dem Host auf, der durch das Betriebssystem getrennt als Maschine angezeigt wird. Start
Container brauchen beim Start sehr wenig bis wenig Zeit. Virtuelle Maschinen brauchen ein paar Minuten zum Starten. Ressource Dies ist eine winzige Umgebung, die überhaupt nicht ressourcenintensiv ist. VMs sind ressourcenintensiv und haben keine Skalierungsfähigkeit. Implementierung Die zugrunde liegende Hardware wird durch Hypervisoren virtualisiert (Verwendung derselben Hardware). Container machen das Betriebssystem virtuell (Verwendung desselben Betriebssystems). Kosten Einfacher und kostengünstiger zu implementieren vs. Virtualisierung

  So verwenden Sie Indoor-Karten auf Google Maps

Ebenen der Containerisierung

Hardware-Infrastruktur: Die Grundlage jeder Anwendung ist eine Sammlung konkreter Ressourcen, die produktiv genutzt werden können. Damit Container ordnungsgemäß funktionieren, müssen diese Ressourcen vorhanden sein. Sie könnten auf einem Laptop oder in einem der vielen mit der Cloud verbundenen Rechenzentren ausgeführt werden.

Host-Betriebssystem: Nach der Hardware-Schicht kommt die nächste Schicht, das Host-Betriebssystem. Wie bei der Hardwareschicht kann dies so einfach sein wie die Installation von Windows oder * nix auf einem beliebigen Personal Computer, oder es könnte vollständig von einem Cloud-Service-Anbieter übernommen werden.

Die Container Engine: Hier beginnt eine spannende Wendung: die Container Engine. Container-Engines sind Software, die auf dem Host-Betriebssystem installiert wird und für die Virtualisierung der Ressourcen verantwortlich ist, die von containerisierten Anwendungen benötigt werden.

Diese Schicht ist am einfachsten zu erfassen, wenn Docker auf einem Computer ausgeführt wird. Diese Schicht stellt sicher, dass der Container betriebsbereit ist, und verwaltet seinen gesamten Lebenszyklus.

Container: Containerisierte Apps sind Codeteile, die alle Bibliotheken, Binärdateien und Konfigurationseinstellungen enthalten, die eine App ausführen muss. Container werden auch als Docker-Container bezeichnet. Eine containerisierte Anwendung arbeitet als ihr Prozess im „Benutzerbereich“, der sich vom Kernel des Betriebssystems unterscheidet.

Die Vorteile der Containerisierung

Portabilität: Leute beschweren sich darüber, dass eine Anwendung in einer Umgebung gut funktioniert (z. B. Staging), aber nicht in einer anderen. Es ist ein DevOps-Dilemma. Normalerweise ist das Problem ein Unterschied in der Umgebung. Möglicherweise wurde eine Abhängigkeit aktualisiert. Mit der Containerisierung können überall die gleichen Container-Images inklusive Abhängigkeiten ausgeführt werden.

Schnell: Container starten schneller als virtuelle Maschinen oder Bare-Metal-Server. Container booten in Sekunden, während virtuelle Maschinen je nach Ressourcen und App-Größe Minuten benötigen.

  Verwenden Sie eine iTunes-Alternative, um Medien selektiv mit Ihrem iPhone zu synchronisieren und DRM zu entfernen

Ressourcenschonend: Container sind effizienter als virtuelle Maschinen, da sie nur anwendungsspezifische Dateien enthalten. Virtuelle Maschinen sind Gigabyte, während Container Megabyte sind. Mithilfe von Containern können Teams Serverressourcen effizient nutzen.

Einfache Bereitstellung und Entwicklung: Tragbare Container können überall verwendet werden. Containerisierte Apps sind schnell, klein und einfach bereitzustellen.

Durch die Containerisierung kann Ihr Team lokal und in der Produktion dasselbe Image erstellen. Container-Apps können Situationen reduzieren, in denen etwas an einem Ort funktioniert, aber nicht an einem anderen. CI/CD-Pipelines unterstützen den Containerbau. Diese Vorteile verbessern die Teamproduktivität.

Fehlerbehebung: Die Containerisierung isoliert und trennt Anwendungen. Der Ausfall eines Containers hat keinen Einfluss auf die Funktionalität der anderen. Entwicklungsteams können einen fehlerhaften Container identifizieren und reparieren, ohne andere zu beeinträchtigen. Die Container-Engine kann die SELinux-Zugriffssteuerung verwenden, um Containerprobleme zu finden und zu isolieren.

Sicherheit: Die Containerisierung von Programmen verhindert, dass Malware andere Apps oder das Hostsystem schädigt. Angegebene Sicherheitsberechtigungen werden festgelegt, um zu verhindern, dass unerwünschte Komponenten in andere Container gelangen, oder um die Kommunikation einzuschränken.

Verwaltbarkeit: Automatisieren Sie containerisierte Arbeitslasten und Dienste mithilfe einer Container-Orchestrierungsplattform. Die Container-Orchestrierung vereinfacht Verwaltungsaufgaben, einschließlich der Veröffentlichung neuer App-Versionen, der Skalierung containerisierter Programme sowie der Überwachung, Protokollierung und Fehlerbehebung.

Kontinuität: Der Ausfall eines Containers wirkt sich nicht auf die anderen aus. Entwickler können einen Container reparieren, ohne andere zu beeinträchtigen. Die Containerisierung garantiert die Betriebskontinuität.

Fazit

Containerisierung ist ein neues Softwareentwicklungskonzept, das mit der Zeit immer effizienter wird. Seine Unterstützer glauben, dass es Entwicklern hilft, Software und Apps schneller und sicherer zu erstellen und bereitzustellen.

Da Containerisierungsökosysteme reifen und wachsen, erwarten Branchenteilnehmer fallende Preise. Das Betriebsproblem ist zwar gelöst, aber der Wartungsaufwand bei so vielen winzigen Umgebungen tritt in den Hintergrund. Der nächste wichtige Punkt bei der Containerisierung ist die Orchestrierung.

Moderne Apps werden hier nicht aufhören. Kubernetes ist das nächste große Ding in Sachen Containerisierung und Microservices. Kubernetes erleichtert die Skalierung und Verwaltung von Containerinstallationen. K8s verwaltet Containerbereitstellungen, die größer sind als Docker oder LXC. K8s ist ein beliebtes Tool zum Verwalten von Containern.

Jetzt, wo Container der Vergangenheit angehören, lautet die allgemeine Empfehlung, auf K8s umzusteigen.