Definition „Docker (Software)“

Was ist Docker?

| Autor / Redakteur: chrissikraus / Stephan Augsten

Die Container-Virtualisierung mit Docker macht Anwendungen inklusive ihrer Abhängigkeiten portabel.
Die Container-Virtualisierung mit Docker macht Anwendungen inklusive ihrer Abhängigkeiten portabel. (Bild: Docker.com)

Docker legt Programme samt ihrer Abhängigkeiten in Images ab. Diese bilden die Basis für virtualisierte Container, die auf nahezu jedem Betriebssystem lauffähig sind. So werden Anwendungen portabel und unkompliziert, sei es während der Entwicklung oder beim Skalieren von SaaS-Clustern.

Docker ist eine Software, welche die Container-Virtualisierung von Anwendungen ermöglicht. Anwendungen können inklusive ihrer Abhängigkeiten in ein Image gepackt werden. Mittels einer speziellen Engine kann die so verpackte Anwendung dann in einem Docker Container ausgeführt werden.

Bis auf einige Schnittstellen zu Betriebssystem oder Hardware ist die Applikation komplett isoliert. Es können beliebig viele Container aus einem Image erstellt und parallel betrieben werden, um zum Beispiel skalierbare Cloud-Dienste bereitzustellen. Container-Virtualisierung gibt es in vielen Varianten; Docker versucht, die Arbeit mit Containern möglichst praktisch und unkompliziert zu machen.

Docker Container vs. virtuelle Maschine

Virtuelle Maschinen enthalten von der simulierten Hardware über das Betriebssystem bis zu den installierten Programmen eine große Menge an Informationen. Die Folge: Sie verbrauchen viel Speicherplatz und Ressourcen.

Virtuelle Maschinen haben aber nach wie vor ihre Daseinsberechtigung; zum Beispiel, wenn auf einem Host mehrere Maschinen mit jeweils unterschiedlichen Betriebssystemen oder Hardware-Spezifikationen simuliert werden müssen. Denn ein Docker Container enthält kein eigenes Betriebssystem und keine simulierte Hardware. Hier wird auf das System des Hosts zugegriffen, sodass alle Container OS und Hardware gemeinsam nutzen.

Platzsparende Container

Ein Docker Container enthält also nur die Informationen, die die installierten Anwendungen tatsächlich benötigen. Neben dem Programm selbst enthalten die Container zum Beispiel spezifische Frameworks, auf denen die jeweilige Software aufbaut. Kurz gesagt enthält der Container nicht mehr und nicht weniger als nötig.

Ressourcen wie Hardware oder OS, die eine VM simuliert, teilt der Container via Docker Engine mit dem Host. Zudem kann der Container bei Bedarf auch auf externe Bibliotheken zugreifen. So können Bibliotheken ausgelagert werden, die von mehreren Containern benötigt werden, was die Containergröße nochmals reduziert.

Die Docker Engine

Das Herzstück der Container-Virtualisierung mit Docker ist die Docker Engine. Die Software bildet die Schnittstelle zwischen den Ressourcen des Hosts und den laufenden Containern. Jedes System, auf dem die Docker Engine installiert ist, kann Docker Container nutzen. Ursprünglich wurde Docker für die Verwendung auf Linux-Systemen konzipiert. Mit Virtualisierung per Virtualbox oder Hyper-V funktioniert die Engine allerdings auch auf Geräten mit Windows oder Mac OS. Docker kann also in praktisch allen gängigen Szenarien eingesetzt werden.

Skalierbare Systeme mit Docker

Die Container und Images, die Docker erzeugt, sind im Vergleich zu virtuellen Maschinen sehr kompakt. In einer Cloudumgebung bedeutet das große Ersparnisse: Mit derselben Hardware können deutlich mehr Instanzen bereitgestellt werden. Zudem starten die Container schneller als eine virtuelle Maschine, können also flexibler zur Skalierung eingesetzt werden.

Docker lässt sich in viele gängige DevOps-Systeme wie Ansible oder Puppet integrieren, was die Bereitstellung von Software per Docker Container nochmals vereinfacht. Eine Besonderheit von Docker ist, dass die Container per Skript gesteuert werden können. Ein Docker File hat meist nur wenige Zeilen und enthält alle nötigen Informationen, um ein Docker Image zu starten. Docker eignet sich daher hervorragend, um automatisiert zu skalieren. Die Images lassen sich zudem komfortabel per Repository verwalten.

Docker in der Entwicklung

In der Entwicklung sind voneinander isolierte Container oft praktisch: Sie können unabhängig voneinander entwickelt werden und erleichtern so zum Beispiel die gemeinsame Arbeit an großen Projekten. Container machen das Packen und Ausliefern von Anwendungen simpel, da sie in praktisch jeder Umgebung mit Docker Engine sofort funktionieren. Für Continuous Integration und Continuous Deployment ist das besonders interessant, da jeder Entwickler eigenständig seinen isolierten Teil des Projekts bereitstellen kann.

Und da die Container bereits alle Abhängigkeiten für die jeweils enthaltenen Programme mitbringen, können sie schnell und unkompliziert auf den verschiedensten Maschinen verwendet werden. Als Entwickler könnt man sein Teilprojekt zum Beispiel in einen Container isolieren und auf den Testserver mit Docker Engine übertragen. Dort kann man ohne langwierige Installation oder Warten auf den nächsten Build die gewünschten Tests ausführen.

Über Docker Container lässt sich das Projekt außerdem schnell und einfach mit den Kollegen teilen oder ganz allgemein unabhängig vom jeweiligen Client verwenden. Da die Container isoliert sind, ist es darüber hinaus möglich, verschiedene Umgebungen für eine Software zu simulieren.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Der Weg in die Wolke mit Web-APIs

API-Hosting als Basis einer Microservice-Architektur

Der Weg in die Wolke mit Web-APIs

Microservices gelten heute als Basis moderner Anwendungsarchitekturen. Statt einer monolithischen und schwerfälligen Software wird die gesamte Funktionalität auf überschaubare Teilsysteme verteilt. Die entstandenen Services werden dann üblicherweise über das Internet und RESTful APIs zur Verfügung gestellt. lesen

5 IT-Bereiche mit Open-Source-Dominanz

SUSE über quelloffene Plattformen und Projekte

5 IT-Bereiche mit Open-Source-Dominanz

Open-Source-Code hat sich von seinem Nischendasein verabschiedet und findet mittlerweile nahezu überall Verwendung, ein Beispiel dafür sind Container-Technologien. Die SUSE Linux GmbH hat gleich fünf Bereiche identifiziert, die ohne Open-Source-Community wohl weniger bedeutend in der IT wären. lesen

COBOL – eine Programmiersprache wird uns alle überleben

Vom Mainframe in die Cloud

COBOL – eine Programmiersprache wird uns alle überleben

Die Unternehmens-IT ist in einem permanenten Wandel gefangen – aktuell mischen Microservices und Container, Programmiersprachen wie Python, R und Ruby, Blockchains, Künstliche Intelligenz (KI) und eine ominöse Facebook-Währung die Szene auf. Aber eines bleibt immer: COBOL. lesen

Details zu Microsoft .NET Core 3.0

Neuer C#-Compiler, besserer Garbage Collector und mehr

Details zu Microsoft .NET Core 3.0

Microsoft hat einige Produkt-Updates für Entwickler bereitgestellt: .NET Core 3.0 ist als finales Release erhältlich. Compiler-seitig werden die neuen Versionen der Programmiersprachen C# 8.0 sowie F# 4.7 unterstützt. lesen

Wo Microservice-Architekturen sinnvoll sind

Bereitstellung nach dem Prinzip „Teile und herrsche“

Wo Microservice-Architekturen sinnvoll sind

Leichtgewichtig, zustandslos und bedarfsgerecht skalierbar: Microservice-Architekturen haben es in sich. Gleichzeitig verändern sie die Art und Weise, wie Unternehmen ihre Software entwickeln und bereitstellen. lesen

8 Tipps für DevSecOps und Continuous Testing

Sichere Web-Applikationen trotz agiler Entwicklung

8 Tipps für DevSecOps und Continuous Testing

Das Tempo und die Agilität, die mit DevOps einhergehen, können sich nachteilig auf die Sicherheit auswirken. Eine Abhilfe verspricht DevSecOps durch die Integration kontinuierlicher Sicherheitsprozesse. Janosch Maier, Co-Founder von Crashtest-Security, hat acht Tipps für entsprechende Strategien parat. lesen

Low-Code-Programmierung von Business Apps mit Simplifier

[Gesponsert]

Dev-Insider Deep Dive

Low-Code-Programmierung von Business Apps mit Simplifier

Mittels Low Code lassen sich Business Apps auch mit begrenztem Development-Know-how erstellen. Eine passende Plattform stellt die Simplifier AG aus Würzburg als einer der wenigen deutschen Anbieter bereit. CIO und Co-Founder Christopher Bouveret zeigt im Deep Dive anhand einer fiktiven Barcode-Scan-App zur Maschinendaten-Anzeige, wie die Plattform schnell überzeugende Ergebnisse liefert. lesen

Mac für die Software-Entwicklung aufsetzen

Solution Stack unter macOS

Mac für die Software-Entwicklung aufsetzen

Mit Macbook, iMac und Co. können Entwickler nicht nur eine zuverlässige Hardware-Basis zurückgreifen, sondern auch Software für alle wichtigen Betriebssysteme entwickeln. Damit das reibungslos klappt, gibt es jedoch ein paar Dinge zu beachten. lesen

GitHub Actions API wird CI/CD-fähig

Continuous-Integration- und -Deployment-Workflows

GitHub Actions API wird CI/CD-fähig

Als API für Code-gesteuerte Development-Workflows soll GitHub Actions dabei helfen, ganze Softwareentwicklungsvorgänge zu teilen. CI/CD-Fähigkeiten gingen der Lösung aber ab, wie Beta-Testern auffiel. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45399693 / Definitionen)