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

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

IBM Nabla Container mit Sicherheit einer VM

Weniger Angriffsfläche durch weniger Systemaufrufe

IBM Nabla Container mit Sicherheit einer VM

IBM-Forscher haben eine neue Variante des Software-Containers entwickelt. Die Nabla-Container sollen dabei sicherer sein als Container-Systeme wie Docker, die sich den Kernel gemeinsam teilen. lesen

Images und Container unter Docker

Docker-Einführung, Teil 2

Images und Container unter Docker

Irgendetwas muss Docker besser machen, als andere bekannte Prinzipien und Methoden der Containerisierung und Isolierung. Im zweiten Teil des Docker-Workshops beleuchten wir daher das Konzept der Images, insbesondere den Unterschied zwischen Images und Containern. lesen

Container – Idee, Architektur und Use Cases

Docker-Einführung, Teil 1

Container – Idee, Architektur und Use Cases

Rund um Docker hat sich ein breites Ökosystem an Lösungen von der eigenen Container-Engine bis zur Orchestrierung von Container-Clustern entwickelt. Im ersten Teil unserer Docker-Serie befassen wir uns mit den Vorzügen von Containern im Allgemeinen. lesen

Docker Community Edition mit neuem Release-Zyklus

Ab Version 18.06 nur noch halbjährliche Neuerungen

Docker Community Edition mit neuem Release-Zyklus

Docker wird die Community Edition nicht mehr jedes Quartal aktualisieren, sondern nur noch zwei Mal im Jahr. Die Version 18.06 erhält noch drei Monate lang Support. Die nächste Version soll dann sieben Monate Unterstützung erhalten. lesen

IBM Notes/Domino mit zweiter Beta für Version 10

Analytische E-Mail und moderne Web-Entwicklungstools

IBM Notes/Domino mit zweiter Beta für Version 10

Die Bemühungen von IBM, die Notes/Domino-Plattform auch für die Zukunft relevant zu machen, kommen in dieser Woche weiter in Gang. IBM hat eine zweite Beta der neuen Version 10 angekündigt. lesen

AWX und Ansible Tower 3.2 einrichten und nutzen

DevOps-Enabler Ansible, Teil 4

AWX und Ansible Tower 3.2 einrichten und nutzen

Nach der Installation von Ansible Tower werfen wir einen optionalen Blick auf die Installation von AWX, um uns dann mit Konzept und Arbeitsweise der grafischen Oberfläche für Ansible vertraut zu machen. Ab hier unterscheiden sich AWX und Ansible Tower kaum. lesen

Docker-Image von Windows Server verfügbar

Windows-Container-Version mit mehr Funktionen

Docker-Image von Windows Server verfügbar

Microsoft stellt ein neues Image zur Verfügung, mit dem sich Windows Server nahezu komplett in einem Container betreiben lässt. Das Image soll mehr Möglichkeiten bieten als die Nano- und Core-Bereitstellungen. lesen

Installation von Ansible Tower

DevOps-Enabler Ansible, Teil 3

Installation von Ansible Tower

Manch ein IT-Spezialist arbeitet lieber mit Kommandozeilen, doch auch grafische Oberflächen können Vorteile bieten. Bei Ansible wird dies mit Red Hat Ansible Tower realisiert, im dritten Teil unseres Workshops befassen wir uns mit der Installation des Enterprise-Frontends. lesen

Canonical stellt Minimal Ubuntu bereit

Ubuntu Images für automatisierten Cloud-Betrieb

Canonical stellt Minimal Ubuntu bereit

Mit Minimal Ubuntu hat Canonical ein besonders kleines Ubuntu-Base-Image für den Cloud-Betrieb entworfen. Entsprechende Minimal-Images von Ubuntu 16.04 LTS und 18.04 LTS sind bereits auf den Plattformen Amazon EC2, Google Compute Engine (GCE), LXD und KVM/OpenStack verfügbar. 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)