Docker: Anwendungen per Software-Container in die Cloud bringen

Technologie

Technologie

Datum 11.03.2022
Lesezeit 7 Min.

Docker: Anwendungen per Software-Container in die Cloud bringen

Bessere Skalierbarkeit, geringere Kosten für Infrastruktur und Wartung, höhere Ausfallsicherheit: Immer mehr Unternehmen setzen auf Cloud-Lösungen. In der Cloud werden Anwendungen häufig auf virtuellen Systemen installiert. Dabei kommt zunehmend die Virtualisierungssoftware Docker zum Einsatz. Was kann sie und was macht ihre Container-Virtualisierung so erfolgreich?

Von einzelnen Desktop-Anwendungen bis hin zur kompletten Unternehmens-IT – längst ersetzt die Cloud in immer mehr Firmen bestehende Rechenzentren und andere On-Premises-Lösungen. Auf diese Weise fallen viele Einschränkungen und vergleichsweise hohen Kosten weg.

Das Cloud-Angebot für Unternehmen reicht inzwischen von Office-Anwendungen wie Microsoft 365 bis hin zu Diensten wie Function-as-a-Service (FaaS). Bei FaaS werden gezielt einzelne Funktionen angemietet, etwa künstliche Intelligenz. Viele dieser Anwendungen laufen in der Cloud heute virtualisiert. Lesen Sie hier, wie Sie Docker als Software-Lösung dafür nutzen können.

 

bulb

Vodafone Cloud-Backup für Microsoft 365

Vodafone Cloud-Backup für Microsoft 365

Als Cloud-Native-Lösung sichert das Vodafone Cloud-Backup für Microsoft 365 zuverlässig Ihre Office-Daten vor alltäglichen Risiken. Denn jeder Datenverlust kostet Sie wertvolle Zeit und somit Geld. Ihre Vorteile im Überblick:

  • Backup für alle Microsoft 365-Anwendungen
  • Einfache Suche & schnelle Wiederherstellung
  • Compliance-konform und sicher

 

Was ist Docker?

Docker ist eine freie Virtualisierungssoftware, mit der Sie beliebige Anwendungen sehr einfach auf physischen Computern oder in der Cloud installieren und ausführen können. Docker koordiniert die installierten Programme und regelt deren Zugriff auf Betriebssysteme, Schnittstellen und Netzwerke, sodass es dabei nicht zu Konflikten zwischen den Anwendungen kommt.

Docker kann Programme sowohl auf einem einzelnen Computer, aber auch auf virtuellen Maschinen in der Cloud installieren und ausführen. Selbst das verteilte Ablegen und Ausführen von Anwendungen über Systemgrenzen hinweg ist möglich. So kann beispielsweise die Datenbankkomponente einer Anwendung in der Cloud ausgeführt werden, während das zugehörige Benutzer-Interface auf einem lokalen Arbeitsplatzrechner läuft.

Aber Docker kann noch mehr, beispielsweise mehrere Installationen derselben Software auf einem Computer sauber voneinander trennen und Entwicklungsschritte automatisiert dokumentieren. Damit ist Docker auch für die Anwendungsentwicklung ein wertvolles Werkzeug.

Für jedes aktive Programm legt Docker einen sogenannten Software-Container an, in dem das Programm zusammen mit seinen benötigten Dateien abgelegt wird. Diese Daten umfassen beispielsweise:

  • den eigentlichen Programmcode
  • Bibliotheken
  • Ausführungsumgebungen
  • Systemprogramme
  • Anwendungsdaten
  • sonstige von der Software benötigte Dateien

Entwickelt wurde Docker ursprünglich für das Betriebssystem Linux. Inzwischen gibt es Docker für weitere Plattformen, darunter Microsoft Windows und macOS. Auch auf Cloud-Diensten wie Amazon Web Services (AWS) und Microsoft Azure läuft die Virtualisierungssoftware.

Daher werden Docker und seine Container-Virtualisierung mittlerweile in vielen Cloud-Umgebungen genutzt. Inzwischen gibt es passend vorbereitete Software-Container, die Sie direkt anmieten können. Diese Dienstleistung wird als Containers-as-a-Service bezeichnet.

Über Container-Verwaltungswerkzeuge (sogenannte Container-Orchestration-Tools) können Planung, Bereitstellung und Vernetzung von Software-Containern automatisiert werden. Verbreitete Orchestrierungslösungen sind Docker Swarm, Kubernetes und Nomad. Anbieter von Cloud-Produkten haben zum Teil eigene Orchestration-Tools im Programm. Doch nicht jedes Tool ist mit allen Container-Formaten kompatibel.

Docker wurde in der Programmiersprache Go geschrieben und 2013 vom Unternehmen Docker, Inc. (ehemals dotCloud) veröffentlicht. Seitdem wird die Software sowohl vom genannten Unternehmen selbst als auch von einer großen Open-Source-Entwicklergemeinde als freie Software weiterentwickelt.

Video: YouTube /  heise online

 

Überblick der Docker-Fachbegriffe und Tools

Docker arbeitet mit eigenen Begrifflichkeiten. Basis der Docker-Welt ist das Image. Es umfasst alle Daten, die zu einem Programm gehören.

In einer Textdatei namens Dockerfile ist der genaue Aufbau eines jeden Image festgelegt. Durch Kopieren und Bearbeiten eines solchen Dockerfile können Sie sehr einfach Baupläne für weitere, hieraus abgeleitete Images erstellen.

Fügen Sie einem Image Befehle oder Dateien hinzu, werden diese Ergänzungen als Layer (Ebenen) bezeichnet. Alle Ergänzungen werden protokolliert, sodass die Entwicklung eines Image anhand seiner Layer jederzeit nachvollziehbar ist. Einmal erstellte Layer können Sie nachträglich nicht mehr verändern. Sie lassen sich aber mit weiteren Layern fortschreiben.

Die Docker Engine regelt, wie die Programme aus ihren Containern heraus auf das gemeinsame Betriebssystem und die Hardware zugreifen: Sobald Sie ein Programm starten, wird automatisch ein Container angelegt, in dem es ausgeführt wird. Dabei können Sie mehrere Container verbinden und sie über ein von Docker bereitgestelltes virtuelles Netzwerk miteinander kommunizieren lassen.

Für die Ausführung wird das Programm an den sogenannten Docker Daemon übergeben. Dieser Hintergrundprozess erstellt und verwaltet als Teil der Docker-Umgebung alle Images und Container. Beenden Sie ein Programm, löscht der Daemon den jeweiligen Container wieder. Damit werden alle Systemressourcen, die das Programm während seiner Laufzeit genutzt hat, wieder für andere Programme frei.

Ausklappbare Informationsgrafik

 

Mit dem Tool Docker Compose können Sie Anwendungen definieren und freigeben, die in mehreren Containern koordiniert ausgeführt werden sollen. Solche Programme werden unter Docker auch als Multicontaineranwendungen oder Stacks bezeichnet.

Selbst erstellte Images können Sie für andere Entwickler:innen in einem sogenannten Repository bereitstellen. Ein solches Repository kann einem begrenzten Nutzerkreis offenstehen oder im Web für alle Docker-Nutzer:innen frei zugänglich sein. Das größte öffentliche Repository mit rund zehn Millionen Images und zugleich die größte Nutzer-Community ist das „Docker Hub Container Image Library“ im Netz.

Video: YouTube / the native web GmbH

 

Docker vs. Virtual Machines

Noch vor einigen Jahren waren virtuelle Maschinen (Virtual Machines, kurz: VM) dominierend in der Virtualisierung von Systemen und Anwendungen. Eine virtuelle Maschine simuliert alle Komponenten eines echten Computers. Hierzu gehört auch eine eigene Betriebssystem-Installation. Daher spricht man hier auch von der Vollvirtualisierung. Ein solches Betriebssystem als Teil einer virtuellen Maschine heißt Gast-Betriebssystem. Das Betriebssystem, auf dem eine oder mehrere virtuelle Maschinen laufen, ist das Host-Betriebssystem.

Eine Hypervisor-Software erstellt und verwaltet alle virtuellen Maschinen auf einem Computer oder innerhalb einer Cloud. Sie bildet zugleich die Verbindung zwischen den Gast-Betriebssystemen und dem Host-Betriebssystem.

Im Unterschied hierzu sind Docker-Container wesentlich ressourcensparender. Denn bei ihnen entfällt die Installation eines Gast-Betriebssystems. Docker-Anwendungen verbrauchen somit nur unwesentlich mehr Systemleistung als nicht-virtuelle Anwendungen. Selbst auf einer kleinen Plattformen können sehr viele Docker-Container gleichzeitig laufen. Auch für den Einplatinencomputer Raspberry Pi gibt es daher bereits Docker-Umsetzungen. Sie unterstützen sogar die Verbindung mehrerer Raspberry Pi über einen sogenannten Docker-Schwarm.

Alle Container einer Plattform nutzen über die Docker Engine direkt das Host-Betriebssystem der Computerhardware. Nur das Netzwerk-Interface und das Dateisystem sind exklusiv. Man spricht daher bei Docker auch von einer Betriebssystemvirtualisierung. Denn nur dieses wird aus Sicht der Anwendung virtualisiert.

Installieren Sie viele Anwendungen parallel, spart Docker gegenüber VM erheblich Speicherplatz. Zugleich können Docker-Container sehr schnell auf andere Umgebungen übertragen werden. Auch das Anlegen eines neuen Containers erfolgt wesentlich zügiger als das Hochfahren einer VM. Besonders für die Softwareentwicklung sind dies große Vorteile.

 

Unterschiedliche Abstraktionsebenen für unterschiedliche Anwendungsgebiete

Docker und VM arbeiten auf unterschiedlichen Abstraktionsebenen. Docker kommt zum Einsatz, um einzelne Anwendungen isoliert zu installieren, sie weiterzuentwickeln und sie als Image an andere Entwickler:innen weiterzugeben. Docker-Images sind klein und leicht weiter zu verteilen.

VM simuliert hingegen eine komplette Hardware mit allen gegenseitigen Abhängigkeiten der einzelnen Programme und Betriebssystemkomponenten. Damit können Sie sie sogar auf andere Plattformen transferieren – beispielsweise eine Linux-VM über die Software Virtualbox auf einen Windows-Rechner.

Docker und VM haben somit ihre jeweiligen Einsatzgebiete, in denen sie gegenüber der anderen Lösung klar im Vorteil sind. Aber auch die Kombination beider Welten ist möglich, etwa in der Cloud. Sie können Docker beispielsweise auf einer virtuellen Maschine unter Linux ausführen, um darauf Docker-Container zu verwenden.

Ausklappbare Informationsgrafik

 

Containers-as-a-Service und weitere Einsatzmöglichkeiten

Neben den Cloud-Services IaaS, PaaS und SaaS hat sich Containers-as-a-Service (CaaS) längst als Cloud-Modell etabliert. Genau hier setzt Docker an, indem es die besonders einfache Erstellung, Weiterentwicklung und Weitergabe von Software-Images erlaubt.

Je nach Anbieter ist dabei auch eine Multi-Cloud-Verknüpfung möglich. Damit verbinden Sie Ihre Docker-Container und die darin befindlichen Anwendungen mit anderen Containern in anderen Anwendungen. Oder Sie verknüpfen die Container mit Daten in anderen Cloud-Modellen, beispielsweise einer Datenbank in einer Umgebung als Software-as-a-Service.

Natürlich funktioniert Docker nicht nur in der Cloud. Images können ebenso einfach auf physischen Systemen installiert, ausgeführt und weitergegeben werden. Vorausgesetzt, Ausgangs- und Ziel-Betriebssystem stimmen überein.

 

Mit Vodafone in der Multi-Cloud durchstarten

Mit Vodafone in der Multi-Cloud durchstarten

Kaum ein Cloud-Dienst deckt sämtliche unternehmerischen Anforderungen aus einer Hand ab. Mit Vodafone gelingt die Steuerung Ihres Multi-Cloud-Ansatzes optimal: Neben den Angeboten von Azure, Alibaba und AWS bieten wir professionellen Support und optimale Konnektivität aus einer Hand.  

  • Umfassende Bedarfsanalyse im Vorfeld
  • Individueller Roll-out-Plan basierend auf Ihren Anforderungen
  • Gemeinsame Optimierung der Infrastruktur und Services

 

Die praktische Arbeit mit Docker: Wichtige Tipps

Bei der Arbeit mit Docker sollten Sie einige Dinge beachten. Denn es gibt ein paar Unterschiede zur klassischen hostbasierten beziehungsweise monolithischen Entwicklung:

  • Minimalistisch bleiben: Implementieren Sie möglichst nur einen Prozess in jedem Container. Laden Sie darüber hinaus nur das hinein, was für Ihre Anwendung oder deren Bestandteil unbedingt notwendig ist.
  • Datenhaltung separieren: Speichern Sie möglichst keine dauerhaft benötigten Daten direkt in einem Container. Standardmäßig können Container jederzeit beendet oder neu gestartet werden, was dann für einen Datenverlust sorgen würde. Mittlerweile gibt es aber auch unter Docker Lösungen, um sogenannte persistente Container zu erschaffen, etwa für Datenbanken.
  • Orchestrierung beachten: Sobald eine Vielzahl von Containern gestartet wird, ist es wichtig, den Überblick zu behalten. Hier sollten Sie frühzeitig ein Orchestrierungs-Tool wie beispielsweise Kubernetes einsetzen.
  • Root-Rechte vermeiden: Speziell für öffentlich verfügbare Docker-Images gelten ähnliche Regeln wie für Software an sich: Erteilen Sie den Images möglichst keine Root-Rechte – oder zumindest nur lokal. Ansonsten könnte sich Schadsoftware unbemerkt in Ihrem System einnisten.

 

AWS und Vodafone: Ideal für Open Source- und App-Entwicklung

AWS und Vodafone: Ideal für Open Source- und App-Entwicklung

Setzen Sie gemeinsam mit uns auf den Marktführer im IaaS (Infrastructure-as-a-Service)-Bereich. Inklusive performanter Cloud-Anbindung an das Vodafone-Netz und Services rund um die Workload-Migration.

  • Breitestes Portfolio: 200+ cloudbasierte Services
  • Unterstützung für Apache Kafka, MySQL, Linux und mehr
  • E-Commerce-Cloud-Computing-Lösung für den (Online-)Einzelhandel

 

Die Vorteile von Docker auf einen Blick

Die wachsende Beliebtheit von Docker hat viele Gründe. Hier die wichtigsten:

  • Mehr Effizienz: Anwendungen lassen sich isoliert von der Hard- und Software des Einzelsystems ausführen und verbrauchen nur die benötigten Ressourcen.
  • Verbesserte Sicherheit: Durch die Virtualisierung und klare Festlegung des Ressourcenbedarfs lassen sich die einzelnen Docker-Container so voneinander abgrenzen, dass Sicherheitsrisiken minimiert werden.
  • Höhere Abstraktionsebene: Die Frage nach der Lauffähigkeit einer Anwendung unter bestimmten Bedingungen stellt sich bei Docker nicht. Entweder die Container laufen – oder eben nicht. Das zugrunde liegende System ist gewissermaßen irrelevant (sofern es korrekt konfiguriert wurde).
  • Bessere Skalierbarkeit: Greifen viele Nutzer:innen auf eine bestimmte Anwendung zu, werden entsprechend viele Container gestartet und auf beinahe beliebigen, verteilten Systemen ausgeführt.
  • Höhere Modularität: Durch die Verwendung sogenannter Microservices können laufende Prozesse (Container) grundsätzlich auch in mehreren Apps gemeinsam zum Einsatz kommen.
  • Schnellere Aktualisierungen: Früher mussten Systeme meist neu gestartet werden, wenn neue Softwareversionen eingespielt wurden. Mit Docker entfällt diese Notwendigkeit, da neue Container sich im laufenden Betrieb binnen Sekunden starten und beenden lassen.
  • Bessere Versionskontrolle und Rollback-Möglichkeit: Docker-Images beinhalten eine ganze Reihe von Layern, die die einzelnen Versionen widerspiegeln. Gibt es Fehler in der aktuellen Version, können Sie einfach auf den letzten funktionierenden Layer zurückgreifen. Diese Eigenschaft unterstützt auch das agile Entwicklungsprinzip.
  • Leichter zu orchestrieren: Benötigen Sie eine Vielzahl von Docker-Containern auf verschiedenen Systemen, brauchen Sie Werkzeuge für deren Koordination. Mit Kubernetes, Docker Swarm und Amazon ECS existieren solche Werkzeuge bereits.

Video: YouTube / predic8

 

Container-Technologie und Sicherheit

Docker führt alle Anwendungen in virtuellen Containern aus. Somit werden die Schnittstellen zwischen ausgeführten Programmen und ihrer Umgebung von Docker selbst überwacht. Trotzdem oder sogar gerade deshalb gibt es auch in dieser Form der Virtualisierung prinzipbedingte Sicherheitsrisiken.

Gerade der gemeinsame Zugriff aller Container auf das Betriebssystem verlangt unter Docker besondere Aufmerksamkeit. Schadprogramme wie Viren oder Trojaner greifen auf einer virtuellen Maschine häufig das Gast-Betriebssystem an. Dann können sie durch Bereinigung oder im äußersten Fall durch Neuaufsetzen der virtuellen Maschine entfernt werden. Unter Docker attackiert Schadsoftware zwangsläufig immer das eigentliche Host-Betriebssystem. Dafür muss die Malware allerdings eine Lücke in der Docker Engine finden.

Immer wieder wurde in der Vergangenheit von Exploits berichtet, bei denen genau dies gelungen war. Auch die auf „Docker Hub“ bereitgestellten Docker-Images sollen teilweise Sicherheitsmängel aufweisen. Allein die Veröffentlichung im Hub ist noch keine vollständige Gewähr für Sicherheit. Achten Sie daher auf folgende Punkte:

  • Prüfen Sie alle Ihnen zugesandten oder von Ihnen heruntergeladenen Images auf Sicherheit und Rechtefreigaben, bevor Sie diese auf eigenen Produktionssystemen verwenden.
  • Betreiben Sie Container unter Unix und Linux im sogenannten Rootless Mode. So arbeiten auch der Docker Daemon und Ihre Container nicht als Root-User.
  • Legen Sie passend zum Betriebssystem unter Docker fest, auf welche RAM- und CPU-Ressourcen ein Container zugreifen darf.
  • Achten Sie darauf, dass Sie immer mit der neuesten Docker-Version für Ihr Betriebssystem arbeiten.
  • Schützen Sie Ihr System einschließlich der Docker-Container mittels Firewall und Virenscanner gegen Schadsoftware und Attacken aus dem Netz.

Beachten Sie diese Sicherheitsregeln, ist Docker ein wertvolles und zeitsparendes Werkzeug für Einsatz und Entwicklung von Software in der Cloud oder auf physischer Hardware.

 

Vodafone Cyber Security Services

Vodafone Cyber Security Services

Immer mehr DDoS-Attacken, professionelle Hacker-Angriffe, hohe Compliance-Anforderungen: Nie war es wichtiger, Ihre Infrastruktur vor Risiken zu schützen. Dank der Vodafone Cyber Security-Elemente können Sie Ihre Cloud umfassend absichern: von DDoS-Mitigation über Managed Firewall bis hin zum Schutz der physikalischen Komponenten.

Mehr Sicherheit für Ihr Unternehmen: Wir beraten Sie gern über die passenden Cyber Security-Lösungen.

 

Docker: Das Wichtigste zusammengefasst

  • Docker virtualisiert Anwendungen in platzsparenden Software-Containern.
  • Die Virtualisierungssoftware ist inzwischen für viele Betriebssysteme und Cloud-Umgebungen verfügbar.
  • Gegenüber virtuellen Maschinen spart Docker die Installation eines Gast-Betriebssystems.
  • Cloud-Anbieter setzen mit Modellen wie Containers-as-a-Service auf Nutzer:innen von Docker und anderen Container-Systemen.
  • Eine einfache Versionskontrolle und die Rollback-Funktionalität erleichtern die Anwendungsentwicklung unter Docker.
  • Viele Docker-Images werden über den „Docker Hub“ zum Download angeboten.
  • Auch unter Docker ist IT-Sicherheit ein wichtiges Thema mit sehr spezifischen Herausforderungen.

 

Welche Virtualisierungslösungen nutzen Sie in Ihrem Unternehmen? Setzen Sie auf virtuelle Maschinen oder arbeiten Sie mit Docker-Containern? Schreiben Sie uns in den Kommentaren von Ihren Erfahrungen.


Ihre Digitalisierungs-Berater:innen für den Mittelstand

Sie haben Fragen zur Digitalisierung? Unser Expert:innen-Team hilft Ihnen kostenlos
und unverbindlich im Chat (Mo.-Fr. 8-20 Uhr). Oder am Telefon unter 0800 5054512

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Facebook Twitter WhatsApp LinkedIn Xing E-Mail