Was ist ein Linux-Container?
Ein Linux®-Container besteht aus einem oder mehreren Prozessen, die vom restlichen System isoliert sind. Alle zur Ausführung notwendigen Dateien werden über ein separates Image bereitgestellt, das bedeutet Linux-Container sind von der Entwicklung über die Testphase bis zur Produktion portierbar und konsistent. Dadurch lassen sie sich wesentlich schneller einsetzen als Entwicklungs-Pipelines, die auf der Replikation herkömmlicher Testumgebungen basieren. Indem Sie Sicherheit in Ihre Container-Pipeline integrieren und ihre Infrastruktur schützen, können Sie sicherstellen, dass Ihre Container zuverlässig, skalierbar und vertrauenswürdig sind. Sie können die containerisierte Anwendung außerdem problemlos zwischen Public-, Private-, On-Premise- und Hybrid Cloud-Umgebungen sowie Rechenzentren verschieben, wobei das Verhalten und die Funktionalität konsistent bleiben.
Vorteile und Nutzen von Linux-Containern
Nehmen wir an, Sie entwickeln eine Anwendung. Sie arbeiten an einem Laptop, und Ihre Umgebung hat eine bestimmte Konfiguration. Andere Mitarbeitende im Entwicklungsteam haben eventuell Konfigurationen, die sich von Ihren unterscheiden. Die von Ihnen entwickelte Anwendung basiert auf dieser Konfiguration und ihren spezifischen Libraries, Abhängigkeiten und Dateien. Ihr Unternehmen verfügt indessen über Entwicklungs- und Produktivumgebungen, die mit ihren eigenen Konfigurationen und ihren eigenen Datei-Sets standardisiert sind. Sie möchten diese Umgebungen so weit wie möglich lokal nachbilden, ohne jedoch den Aufwand zur Neuerstellung der Serverumgebungen. Mithilfe von Containern können Sie sicherstellen, dass Ihre Anwendung in diesen Umgebungen funktioniert, die Qualitätssicherung besteht und die Bereitstellung ohne größere Probleme, Neuprogrammierung und zeitaufwendige Disaster Recovery erfolgt.
Container tragen dazu bei, Konflikte zwischen Ihren Entwicklungs- und Operations-Teams zu reduzieren, da die Zuständigkeiten getrennt sind. Entwicklerinnen und Entwickler können sich auf ihre Apps konzentrieren und Operations-Teams auf die Infrastruktur. Da Container auf Open Source-Technologie basieren, können Sie von den aktuellen Weiterentwicklungen profitieren, sobald diese verfügbar sind. Container-Technologien – darunter Podman, Skopeo, Buildah, CRI-O, Kubernetes und Docker – unterstützen Ihr Team beim Vereinfachen, Beschleunigen, raschen Skalieren und Koordinieren der Anwendungsentwicklung und -bereitstellung.
Red Hat Ressourcen
Was ist LXC?
Das Linux-Containers-Projekt (LXC) ist eine Open Source-Containerplattform, die verschiedene Tools, Vorlagen, Libraries und Sprachbindungen bereitstellt. LXC verfügt über eine einfache Befehlszeilenschnittstelle, die das Benutzererlebnis beim Starten von Containern verbessert.
LXC bietet eine Virtualisierungsumgebung auf Betriebssystemebene, die sich auf vielen Linux-basierten Systemen installieren lässt. Möglicherweise ist LXC über das Paket-Repository Ihrer Linux-Distribution verfügbar.
Container-Standards, Verlauf und Branchentrends
Die Idee, die wir heute als Container-Technologie bezeichnen, tauchte erstmals im Jahr 2000 als FreeBSD-Jails auf, einer Technologie, die das Partitionieren eines FreeBSD-Systems in mehrere Subsysteme oder Jails ermöglicht. Jails wurden als sichere Umgebungen entwickelt, die Systemadmins mit mehreren Nutzenden innerhalb oder außerhalb einer Organisation teilen konnte.
Im Jahr 2001 wurde mit dem VServer-Projekt von Jacques Gélinas eine isolierte Umgebung in Linux implementiert. Dies bildete die Basis für mehrere kontrollierte Benutzerbereiche in Linux, aus denen schließlich die heutigen Linux-Container hervorgingen.
Es wurden sehr schnell weitere Technologien kombiniert, um diesen isolierten Ansatz zu realisieren. Kontrollgruppen (cGroups) sind eine Kernel-Funktion, die die Ressourcennutzung für einen Prozess oder Gruppen von Prozessen steuert und einschränkt. systemd, ein Initialisierungssystem, das den Benutzerbereich einrichtet und seine Prozesse verwaltet, wird von cgroups verwendet, um eine bessere Kontrolle über diese isolierten Prozesse zu ermöglichen. Beide Technologien erweiterten die Gesamtkontrolle über Linux und bildeten gleichzeitig das Framework, mit dem Umgebungen erfolgreich voneinander isoliert bleiben konnten.
Einführung von Docker
Docker wurde 2008 (über dotCloud) mit der namensgebenden Container-Technologie veröffentlicht. Die Docker-Technologie brachte neue Konzepte und Tools hervor – eine einfache Befehlszeilenschnittstelle zum Ausführen und Erstellen neuer geschichteter Images, einen Server-Daemon, eine Library mit vorgefertigten Container Images und das Konzept eines Registry Servers. In Kombination ermöglichten diese Technologien den Nutzenden, schnell neue mehrschichtige Container zu erstellen und diese einfach mit anderen zu teilen.
Es gibt 3 wichtige Standards, um die Interoperabilität von Container-Technologien sicherzustellen: die Spezifikationen für OCI-Images, Distribution und Runtime. Zusammen ermöglichen diese Spezifikationen Community-Projekten, kommerziellen Produkten und Cloud-Anbietern die Entwicklung interoperabler Containertechnologien (denken Sie beispielsweise daran, Ihre selbst erstellten Images in den Registry Server eines Cloud-Anbieters zu übertragen). Heute sind Red Hat und Docker neben vielen anderen Unternehmen Mitglieder der Open Container Initiative (OCI) – einer offenen Governance-Struktur, die offene Branchenstandards für Container-Formate, Image-Spezifikationen und Runtimes entwickelt.
Container-Orchestrierung und -Management
Container verfügen über den gleichen Betriebssystem-Kernel und isolieren Anwendungsprozesse vom restlichen System, sodass Container zu beliebigen Entwicklungs-, Test- und Produktionskonfigurationen migriert und dort geöffnet sowie verwendet werden können. Da sie schlank und portierbar sind, unterstützen Container eine schnellere Entwicklung und passen sich flexibel den geschäftlichen Anforderungen an. Mithilfe von Container-Orchestrierung können Sie diese Deployments in einem Unternehmen verwalten.
Kubernetes ist eine Open Source-Plattform, die die Operationen von Linux-Containern automatisiert. Durch sie lassen sich zahlreiche manuelle Prozesse eliminieren, die mit dem Bereitstellen, Skalieren und Überwachen des Zustands containerisierter Anwendungen verbunden sind. Mit Kubernetes können Sie Ressourcen dynamisch nach Bedarf zuweisen und so die Performance verbessern und Überprovisionierung vermeiden. Kubernetes bietet die Plattform zum Planen und Ausführen von Containern auf Clustern physischer oder virtueller Maschinen. Die Kubernetes-Architektur unterteilt einen Cluster in Komponenten, die zusammenarbeiten, um den definierten Zustand des Clusters beizubehalten. Red Hat® OpenShift® ist ein von der Cloud Native Computing Foundation (CNCF) zertifiziertes Kubernetes-Angebot, das Kubernetes als Basis für eine vollständige Plattform nutzt, um cloudnative Anwendungen konsistent in Hybrid Cloud-Umgebungen bereitzustellen.
Container im Vergleich zu virtuellen Maschinen
Bei der Virtualisierung wird mithilfe von Software eine Abstraktionsschicht erstellt, über die Computer-Hardwareelemente, gesteuert von einem Hypervisor, auf mehrere virtuelle Computer aufgeteilt werden können. Diese VMs (virtuellen Maschinen) sind Umgebungen, in denen Container ausgeführt werden können, allerdings sind die Container nicht an die virtuellen Umgebungen gebunden. Container sind eine Virtualisierungsmethode, mit der Sie Ressourcen schneller provisionieren und neue Anwendungen schneller verfügbar machen können, weil für Container kein Hypervisor erforderlich ist. Einige Softwareprodukte – wie Red Hat® OpenShift® Virtualization – können sowohl Container orchestrieren als auch virtuelle Maschinen verwalten. Container und virtuelle Maschinen sind zwar komplementäre, aber unterschiedliche Ansätze:
- Mit Virtualisierung können Sie mehrere simulierte Umgebungen oder dedizierte Ressourcen auf einem einzigen physischen Hardwaresystem erstellen.
- Container verwenden denselben Betriebssystemkernel und isolieren die Anwendungsprozesse vom restlichen System. Als Beispiel: ARM-Linux-Systeme führen ARM-Linux-Container, x86 Linux-Systeme führen x86 Linux-Container und x86 Windows-Systeme führen x86 Windows-Container aus. Linux-Container können sehr gut portiert werden, müssen aber mit dem zugrunde liegenden System kompatibel sein.
Die VMs verfügen über begrenzte Fähigkeiten, da die Hypervisoren, mit denen sie erstellt werden, ebenfalls von den begrenzten Ressourcen einer physischen Maschine abhängig sind. Container verfügen jedoch über den gleichen Betriebssystem-Kernel und die gleichen Paketanwendungen. Container virtualisieren das Betriebssystem anstelle der Hardware, sodass Container und VMs trotz ähnlicher Funktionen zum Isolieren und Zuweisen von Ressourcen unterschiedlich funktionieren.
Container und virtuelle Maschinen können innerhalb von IT-Infrastrukturen auch zusammen verwendet werden. In Hybrid-Umgebungen können containerisierte und VM-basierte Anwendungen auf derselben Infrastruktur ausgeführt werden, wodurch ein flexibler Ansatz entsteht, der für unterschiedliche Anforderungen angepasst werden kann. Dies wird als containernative Virtualisierung bezeichnet. Unternehmen können ihre bestehende VM-Infrastruktur nutzen, um containerisierte Anwendungen zu hosten oder Workloads schrittweise in Container zu migrieren, ohne ihre gesamte IT komplett umstrukturieren zu müssen.
Container-Sicherheit und -Governance
Standardmäßige Sicherheit existiert nicht. Die Containersicherheit umfasst zahlreiche Aspekte: Sie müssen die Container-Pipeline und -Anwendungen sowie die Bereitstellungsumgebungen und die Infrastruktur schützen sowie einen Plan für die Integration in die Sicherheitstools und -richtlinien des Unternehmens erstellen. Statische Sicherheitsrichtlinien und Check-Listen lassen sich nicht an Container im Unternehmen anpassen. Deshalb müssen Sie wissen, wie Sie die Sicherheit Ihrer Container-Pipeline verbessern können.
Bei einem DevSecOps-Ansatz sind Kultur, Automatisierung und Plattformdesign mit Sicherheit integriert – und Sicherheit wird als gemeinsame Verantwortung der Teams behandelt. Richtlinien zur Containersicherheit sollten die Isolierung und Vertrauenswürdigkeit über Kommunikationswege und Zugriffskontrollen hinweg gewährleisten. Außerdem sollten Tools zum Scannen nach Malware und zum Signieren von Images verwendet werden, um potenzielle Schwachstellen zu beheben, die während des Containerbetriebs auftreten können. Mit einem DevSecOps-Ansatz können Sie während des gesamten IT-Lifecycles für konsistente Sicherheit sorgen.
Serverless-Architekturen und -Container
Der Begriff Serverless bezieht sich auf ein cloudnatives Entwicklungsmodell, bei dem Entwicklungsteams Anwendungen erstellen und ausführen können, ohne Server verwalten zu müssen. „Serverless“ bedeutet nicht, dass keine Server vorhanden sind. Es bedeutet, dass die Server von der Anwendungsentwicklung getrennt sind. Ein Cloud-Anbieter übernimmt die Routineaufgaben der Provisionierung, Verwaltung und Skalierung der Server-Infrastruktur.
Bei Serverless verpacken Entwicklungsteams ihren Code in Containern für das Deployment. Nach der Bereitstellung reagieren Serverless-Anwendungen auf die Nachfrage und skalieren bei Bedarf automatisch vertikal. Serverless-Lösungen von Public Cloud-Anbietern werden üblicherweise entsprechend der Nachfrage mit einen eventgesteuerten Ausführungsmodell berechnet. Das heißt, dass eine Serverless-Funktion erst dann etwas kostet, wenn sie tatsächlich benutzt wird.
Use Cases und Anwendungen
Sie können Container für eine Vielzahl von Workloads und Use Cases bereitstellen. Container bieten Ihrem Team die grundlegende Technologie, die für cloudnative Entwicklung erforderlich ist, sodass Sie mit DevOps, CI/CD (Continuous Integration und Continuous Deployment) beginnen und Serverless arbeiten können.
Containerbasierte Anwendungen funktionieren auch in stark verteilten Cloud-Architekturen. Anwendungs-Runtimes bieten Tools zur Unterstützung einer einheitlichen Umgebung für Entwicklung, Bereitstellung, Integration und Automatisierung.
Sie können auch Integrationstechnologien in Containern bereitstellen, damit Sie die Verbindung von Anwendungen und Daten problemlos skalieren können, wie beispielsweise Daten-Streaming in Echtzeit mit Apache Kafka. Wenn Sie eine Microservice-Architektur erstellen, sind Container die idealen Bereitstellungseinheiten für sämtliche Microservices und das Service Mesh-Netzwerk, das sie verbindet.
Warum Red Hat für Container?
Red Hat arbeitet seit vielen Jahren in der Open Source Community daran, Container sicher, stabil, zuverlässig und unterstützungsfähig zu machen. Zudem ist Red Hat der zweitgrößte Mitwirkende an den Codebases von Docker und Kubernetes und arbeitet mit der OCI und der Cloud Native Computing Foundation zusammen, um Features, Zuverlässigkeit und Sicherheit von Containern zu verbessern. Wie bei Open Source-Projekten üblich, trägt Red Hat Code und Verbesserungen wieder zur Upstream-Codebasis bei – und Fortschritte können so gemeinsam genutzt werden.
Die containerorientierten Lösungen und Trainingsangebote von Red Hat bieten Infrastruktur, Plattform, Kontrolle und Informationen, damit Sie von sämtlichen Vorteilen profitieren können, die Container zu bieten haben. Unabhängig davon, ob Sie Ihre Entwicklungsteams auf eine containerfähige Plattform umstellen, Ihre Container-Infrastruktur auf einem effizienten und effektiven Betriebssystem betreiben oder Storage-Lösungen für die von Containern generierten riesigen Datenmengen bereitstellen möchten – mit den Lösungen von Red Hat können Sie sämtliche Anforderungen erfüllen.
Red Hat OpenShift bietet einen skalierbaren Ansatz für Sicherheit und Zuverlässigkeit für Container und kritische Anwendungen. Mit seinen umfassenden Tools und Services optimiert Red Hat OpenShift den gesamten Lifecycle der Anwendungsentwicklung – vom Entwickeln und Bereitstellen bis zum Ausführen und Verwalten. Die Lösung vereinfacht die komplexen Aufgaben der Anwendungsmodernisierung, einschließlich der Entwicklung und Modernisierung von Anwendungen mit KI in Multi Cloud- und Hybrid-Umgebungen. So lassen sich die Effizienz und Produktivität von Entwicklungs- und IT-Operations-Teams steigern.
Red Hat Enterprise Linux bildet eine zuverlässige Basis für die nächsten Schritte Ihrer IT-Entwicklung, von der Migration zur Cloud über die Nutzung der Vorteile von Edge und Containern bis zum Test von KI-Workloads. Entwicklungsteams können die Anwendungsentwicklung durch Zugriff auf Container-Tools, Datenbanken, Programmiersprachen und Runtimes optimieren und dabei von einem konsistenten Erlebnis in verschiedenen Footprints profitieren. Sie können mit Container-Tools die Komplexität reduzieren und gleichzeitig die Portierbarkeit sowie Standardisierung verbessern, wenn Sie benutzerdefinierte und gehärtete Betriebssystem-Images von Red Hat Enterprise Linux zusammenstellen.
Der Image-Modus für Red Hat Enterprise Linux ist ein einfacher, konsistenter Ansatz zum Entwickeln, Bereitstellen und Verwalten des Betriebssystems mithilfe von Container-Technologien. Verwalten Sie Ihr Betriebssystem mit denselben Container-Tools und Workflows wie Anwendungen, um ein konsistentes Erlebnis und eine gemeinsame Sprache für Ihre Teams zu schaffen. Der Image-Modus hilft, die Konfigurationen Ihrer Server konstant zu halten. So werden Abweichungen vermieden, die zu Systeminstabilität und erhöhten Sicherheitsrisiken führen können. Außerdem trägt er zu mehr Sicherheit bei, indem er Angriffsflächen durch unveränderliche Systems-Images reduziert, sodass Sie genau wissen, welche Daten sich in den einzelnen Images befinden.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.