Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03149.jsonl.gz/3018

Container-Technologie – Eine umfassende Übersicht
Wie Software dank Container-Lösungen schneller, einfacher und zuverlässiger entwickelt und implementiert wird.
Diese Übersicht dient dazu, die wichtigsten Fragen rund um die Container-Technologie zu beantworten und einen grundlegenden Überblick über das Thema zu bieten. Diese Zusammenfassung können ebenfalls als PDF herunterladen.
1. Was ist die Container-Technologie oder Container-Virtualisierung?
2. Welche Vorteile bietet eine Container-Lösung?
3. Was sind die Unterschiede zu "herkömmlichen" Lösungen und Virtuellen Maschinen (VM)?
4. Welche Risiken birgt eine Container-Lösung?
5. Wie verbessert die Container-Technologie die Update- und Implementierungs-Prozesse konkret?
6. Was sind Container-Orchestrierungs-Plattformen?
7. Was ist Kubernetes?
8. Was ist DevOps?
9. Gehören DevOps und Container immer zusammen?
10. Gibt es Best Practices für das Deployment von Container-Umgebungen?
11. Wie gross ist der Lernaufwand für die Arbeit mit Containern?
12. Wie gelingt der Start in ein Container-Projekt?
13. Container-Technologie: managed oder unmanaged?
14. Wo gibt es Tutorials / Antworten auf konkrete anwendungstechnische Fragen im Zusammenhang mit Containern, Kubernetes oder DevOps?
15. Mit welchen Netzwerk-Systemen/ -Architekturen sind Container kompatibel? Wo sind die Grenzen?
16. Wie sicher ist sind Container-Lösungen? Im Vergleich zu Virtuellen Maschinen?
17. Wie gewinnt man internes Buy-In für die Einführung von Containern?
18. Welche Kosten und Ressourcen sind für die Implementierung und den Betrieb einer Container-Lösung realistisch?
19. Wie holt man das eigene Team mit ins Boot?
20. Gibt es Alternativen zu Docker?
Docker beschreibt einen Container als eine standardisierte Software-Einheit. Die Container-Virtualisierung erlaubt es, eine Anwendung unabhängig von einem Host-Betriebssystem zu betreiben. Im Container verpackt ist also eine komplette Anwendung inklusive Code, Abhängigkeiten und Konfigurationen in einem klar festgelegten Format.
Die Standardisierung eines Containers und seine Unabhängigkeit vom Host-Betriebssystem bietet für die Entwicklung und den Betrieb von Software bestechende Vorteile:
Vorteil #1 Mit Containern lassen sich Applikationen besser skalieren.
Die Container-Virtualisierung basiert auf autonomen, selbständig funktionierenden Einheiten. Damit lassen sich Anwendungen nach Bedarf flexibel und schnell hochfahren oder auch reduzieren.
Vorteil #2 Mit Container laufen Anwendungen schneller.
Container starten schneller, da kein eigenes Gast-Betriebssystem notwendig ist, welches zuerst gestartet und wieder heruntergefahren werden muss.
Vorteil #3 Container setzen vorhandene Ressourcen effizient ein.
Weil Container kein eigenes Betriebssystem benötigen, werden physische Ressourcen eingespart, welche wiederum für andere Anwendungen bereitstehen.
Vorteil #4 Mit Containern lässt sich Software agiler entwickeln.
Einzelne Container lassen sich innert kürzester Zeit entwickeln und sind einfach reproduzierbar. Das hat unter anderem zum Vorteil, dass ein in der Entwicklerumgebung gestarteter Container genau gleich ist wie dieser in der Produktionsumgebung.
Noch nicht genug Vorteile? Lesen Sie mehr über die Vor- & Nachteile der Container-Technologie in unserem nine Blog oder laden Sie sich unser Tech-Whitepaper "Container Virtualisierung und ihre Verwendung" herunter.
Container und virtuelle Maschinen (VM) beschreiben zwei unterschiedliche Ansätze, wie man Anwendungen in einer virtuellen Umgebung hosten und betreiben kann. Bei VMs sorgt ein sogenannter Hypervisor für die Verteilung der physischen Ressourcen des Servers in virtuelle Maschinen unterhalb des Betriebssystems. Virtuelle Maschinen benötigen zudem ein eigenes Betriebssystem pro Anwendung. Die Virtualisierung bei Containern passiert im Gegensatz dazu direkt auf der Ebene des Betriebssystems. Dies führt dazu, dass Container die vorhandenen Ressourcen wesentlich effizienter nutzen als virtuelle Maschinen und zudem schneller booten.
Lesen Sie in unserem Engineering Logbook mehr zu den unterschiedlichen Lösungen in der Container Technologie
Wer sich über die Container Technologie vertieft informiert, der begegnet unter Umständen auch folgenden Vorbehalten:
«Container sind zu wenig sicher für unsere Anforderungen»
Container sind nicht weniger sicher als andere Umgebungen. Wie bei anderen Setups hängt die Sicherheit davon primär ab, wie die Umgebung aufgesetzt und gewartet wird.
«Die Container-Verwaltung ist viel zu komplex für uns»
Wie bei jeder Veränderung ist auch die Umstellung auf Container mit einem gewissen initialen Aufwand verbunden. Applikationen müssen vorbereitet, Mitarbeitende trainiert und gegebenenfalls Deployment- und Arbeitsprozesse automatisiert werden. Doch diese Investition lohnt sich langfristig und wird durch die oben aufgeführten Vorteile der Containerisierung schnell wettgemacht. Mit Unterstützung von Experten lässt sich dieser Aufwand weiter reduzieren.
«Wir haben eine Deployment-Strategie. Wir brauchen keine Container»
Container ersetzen keine Deployment-Strategie sondern ergänzen und optimieren diese. Die Implementierung der Container-Technologie bedingt nicht, dass Sie Ihr bisheriges Setup komplett umkrempeln. Es gibt diverse Möglichkeiten, Container in eine bestehende IT-Strategie zu integrieren zum Beispiel in Kombination oder ergänzend zu virtuellen Maschinen.
«Container sind nur ein Trend. Wir setzen nur auf Technologien von Dauer»
Die Anfänge des Container-Prinzips liegen im Jahr 1979. Seit der Einführung von Docker im Jahr 2013 hat sich die Container-Technologie konstant weiterentwickelt und ist mittlerweile weit verbreitet und etabliert. So verwalten grosse Tech-Unternehmen wie Amazon, Google und PayPal ihre Anwendung mittels Container und optimieren damit ihre Deployment-Prozesse.
Eine der grössten Herausforderungen jedes IT-Teams ist die Schnittstelle zwischen Entwicklung und Betrieb. Der Einsatz von Containern ermöglicht eine engere Zusammenarbeit dieser Teams unter der Berücksichtigung ihrer jeweiligen Bedürfnisse. Bei Update- und Implementierungs-Prozessen sind die Geschwindigkeit und die Fehlerfreiheit des Codes wichtige Messwerte. Und gerade hier fallen die Vorteile von Containern am stärksten insGewicht.
Beispiel: Geschwindigkeit als Messwert
Eine Container-Orchestrierungs-Plattform dient dazu, die verschiedenen Container zu verwalten. Sie ist ein dynamisches System, welches Container gruppiert, platziert, deren Verbindungen managt und die Kommunikation
sicherstellt. Eine solche Plattform (oder Cluster) kann “on-premise” oder auch auf gängigen Cloud-Plattformen (z.B Google Cloud) betrieben werden. Die Orchestrierung der Container wird zum Beispiel mit OpenShift oder Kubernetes gemanagt..
DevOps baut als Organisations- und Führungskultur auf drei Prinzipien auf - besser bekannt als «The Three Ways»: Dem Flow-Prinzip, dem Feedback-Prinzip und dem Prinzip des kontinuierlichen Lernens und Experimentierens. Diese drei Wege sind bei der Umsetzung zentral, um das übergreifende Ziel - besser und schneller werden - zu erreichen. Dabei dienen die drei Wege als Rahmen für Prozesse, Verfahren und Praktiken, bei denen ganz klar die Optimierung der Zusammenarbeit im Vordergrund steht.
DevOps als Philosophie und die Container als Technologie spielen optimal zusammen. Sie sind jedoch nicht voneinander abhängig, was bedeutet, dass DevOps ohne Container ebenso möglich ist, wie die Container Virtualisierung ohne DevOps. Die Docker Deployment-Strategie rät generell zu möglichst wenigen manuellen Eingriffen (Automatisierung), um die Bewirtschaftung von Container möglichst reibungslos zu gestalten und alle Vorteile zu nutzen. Der DevOps-Gedanke kann durchaus auch in der Arbeit mit klassischen Servern gelebt werden, zum Beispiel wenn es darum geht, die organisatorischen Prozesse zu vereinfachen.
Der erste Einstiegspunkt zu Container-Orchestrierung ist meist Docker-compose. Dieses Tool ist jedoch primär für die lokale Entwicklung geeignet und eignet sich nicht für die Verwendung in Container-Orchestrierungs-Plattformen.
Für Kubernetes gibt es Tools wie Kompose und compose-on-kubernetes, welche die Docker-Compose-Files in API-Objekte übersetzen. Ein vertieftes Verständnis dieser Objekte ist jedoch zwingende Voraussetzung, um bei Problemen selbständig Trouble-Shooting zu betreiben und Installationen zu debuggen.
Hier spielt der Grad der gewünschten Autonomie eine Rolle. Wenn der Betrieb der Containerplattform komplett ausgelagert wird, reichen grundlegende Kenntnisse in Bezug auf die Plattform-API aus. Wird der Betrieb in-house sichergestellt, erfordert der Umstieg auf eine Container-basierte Architektur eine umfangreiche Umschulung von Entwicklern und System Engineers. Ohne ein fundiertes Wissen über die Anwendung von Docker und der gewählten Orchestrierungsplattform geht es nicht.
Die Blogs von Kubernetes und Docker sind gute Anlaufstellen für konkrete Fragestellungen. Auf diesen und auch vielen weiteren Experten-Blogs befinden sich zudem diverse Online-Tutorials, die schnell Antworten bei konkreten Problemstellungen liefern. Auch bei nine sind hilfreiche Informationen im Support-Bereich zu finden.
Container können eine sinnvolle Ergänzung oder Alternative zu VMs sein. Grundsätzlich können Container auch innerhalb eines Netzwerk mit VMs verbunden werden, wenn es die Ausgangslage erfordert. Wichtig: Container laufen sowohl auf Windows als auch Linux, wobei die Windows-Option noch deutliche Nachteile im Gegensatz zu Linux aufweist.
Container sind genau so sicher wie traditionelle Serverlösungen und VMs. Zentral ist, wie diese Umgebungen aufgesetzt werden. Die Fragestellung bezüglich Betrieb und Sicherheitsvorkehrungen unterscheiden sich lediglich im Sicherheitsmodell. In jeder Architekturebene kann man sinnvolle Varianten wählen, um Sicherheit zu gewährleisten - unabhängig davon, ob man Container vor Ort oder in der Cloud betreibt. Letztlich hängt die Sicherheit stark davon ab, wie sicher die Anwendung selbst ist.
Lesen Sie im Interview mit unserem Platform-Teamleiter Tom Whiston, wie die Container die Sicherheit in der Cloud verbessern können.
Wie bei anderen Neuerungen und Investitionen überzeugt man auch bei der Diskussion um die Einführung von Containern letztlich mit dem konkreten Aufzeigen von Kosten-Einsparungen und einer verbesserten Time-to-Market. Erfahrungsgemäss helfen dabei praktische Case Studies und Fallbeispiele enorm.
Die Kosten variieren nach der Grösse und Komplexität des Projekts, des Trainingsaufwands, ob die Containerplattform auf der eigenen Infrastruktur oder ausserhalb betrieben wird. Daher ist es wichtig, vorab eine detaillierte Situationsanalyse – allenfalls unter Beizug eines externen Experten - durchzuführen um den anstehenden Aufwand einzuschätzen.
Der Wechsel auf ein Container-Setup kann mit einem hohen Erst- und Lernaufwand verbunden sein. Die Akzeptanz im Team kann man am besten damit erreichen, indem man die Vorteile der Container-Lösung klar aufzeigt: Zeitersparnis durch automatisierte Prozesse, agile Arbeitsweisen, Skalierbarkeit etc.
Dank des Open-Source-Charakters der Container-Technologie gibt es immer wieder neue Tools, die Anwendungen von Docker ersetzen. Beispiele sind PodMan und Buildah, ersteres ersetzt die Docker Command line und ist für die Betreibung von standalone-Container geeignet. Buildah, ein Shell-basiertes Linux-Tool. Es ermöglicht das Erstellen von Container-Images. Daneben gibt es diverse Run-time-Lösungen wie CRI-O, die anstelle von Docker als Runtime auf Kubernetes verwendet wird.