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

Kubernetes in der AWS Cloud

Container-Orchestrierung mit Amazon EKS

Kubernetes in der AWS Cloud

„Wir würden gerne Docker-Container in AWS mit Kubernetes orchestrieren, aber eine verwaltete Lösung präferieren, da wir die Master-Nodes nicht selbst betreiben möchten. Welcher Dienst kommt für den verwalteten Betrieb eines Kubernetes-Clusters in der AWS-Cloud in Frage?“ lesen

Zahl gehosteter Code-Repositories überschreitet 100 Millionen

GitHub nennt Zahlen aus Open-Source-Community

Zahl gehosteter Code-Repositories überschreitet 100 Millionen

Im November 2018 hat GitHub es geschafft, die Marke von 100 Millionen gehosteten Repositories zu knacken. Softwareentwickler weltweit erstellen aktuell durchschnittlich 1,6 Code-Sammlungen pro Sekunde. lesen

Die beliebtesten DevOps-Anbieter

IT-Awards 2018

Die beliebtesten DevOps-Anbieter

Wenn Softwareentwicklung, IT-Betrieb und Qualitätssicherung unter einen Hut gebracht werden sollen, lautet das Zauberwort DevOps. Dieser Ansatz zur Prozessverbesserung sorgt durch gemeinsame Methoden, Abläufe und Tools für eine effiziente Zusammenarbeit dieser Bereiche. Im Ergebnis führt das zu schnellerer Anwendungsentwicklung, höherer Qualität und optimiertem Teamwork. lesen

Was ist ein Container Image?

Definition „Container-Abbild“

Was ist ein Container Image?

Ein Container Image ist ein relativ isoliertes und unveränderliches Paket aus einer Software und den zur Laufzeit benötigten Werkzeugen und Dateien. Ein Image ist folglich für sich genommen lauffähig und äußerst robust. lesen

Effizientes Arbeiten mit WSL

Das Windows-Subsystem for Linux, Teil 2

Effizientes Arbeiten mit WSL

Das Linux-Subsystem in Windows 10 eignet sich hervorragend für die Entwicklung und das Testing von Software. Damit es möglichst effizient arbeitet, sind allerdings noch einige Handgriffe notwendig. Außerdem ist das Subsystem nicht für jeden geeignet. lesen

Bereitstellung mit AWS Elastic Beanstalk

PaaS Application Management in der AWS Cloud

Bereitstellung mit AWS Elastic Beanstalk

„Wir würden gerne unsere bestehenden Web-Anwendungen in AWS ausrollen und skalieren. Welche PaaS-Lösungen existieren für die Bereitstellung von Anwendungen in der AWS Cloud?“ lesen

Das sind die Gewinner der IT-Awards 2018

IT-Awards 2018

Das sind die Gewinner der IT-Awards 2018

Die Gewinner der IT-Awards 2018 stehen fest. Im Rahmen einer festlichen Abendgala wurden die Gewinner der Readers' Choice Awards 2018 der sieben Insider-Portale am 11. Oktober 2018 in Augsburg gekürt. lesen

AWS Boto3 installieren und konfigurieren

AWS-Ressourcen mit Python bereitstellen, Teil 1

AWS Boto3 installieren und konfigurieren

AWS-Nutzer können Ressourcen in der AWS-Public-Cloud auf verschiedenen Wegen provisionieren. Die programmatische Variante ist vor allem für Entwickler und in DevOps-Szenarien erste Wahl. Zu den zahleichen unterstützten SDKs gehört auch Boto3 für Python. lesen

Wo möchte man auf der DevOps-Reifeskala stehen?

Verschiedene DevOps-Umsetzungen

Wo möchte man auf der DevOps-Reifeskala stehen?

DevOps wird meist in einer der folgenden drei Formen umgesetzt: Als Lite-Version, Operations-orientiertes oder Development-orientiertes DevOps. Aber welches Modell passt zu meinem Unternehmen? lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45399693 / Definitionen)