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

Continuous Delivery in GitOps-Manier

Argo CD und Git in Aktion

Continuous Delivery in GitOps-Manier

GitOps ist aktuell ein großes Thema – als Konzept aber eben reine Theorie. Schaut man sich aber mal ein konkretes Tool an, wird GitOps greifbar. Und dafür eignet sich die Open-Source-Software Argo CD sehr gut. lesen

Container-Orchestrierung mit Windows und Linux

Viel Handarbeit: Windows Server 2019 und Kubernetes

Container-Orchestrierung mit Windows und Linux

Unternehmen, die sich mit Containern beschäftigen, können mit „Windows Server 2019“ auch eine Anbindung von Container-Hosts an „Kubernetes“ durchführen. Der Autor Thomas Joos zeigt die entsprechende Vorgehensweise. lesen

Wie funktioniert GitOps in der Praxis?

Code-gesteuerte Anwendungsumgebung über Git

Wie funktioniert GitOps in der Praxis?

Wenn GitOps eines ist, dann aktuell ein großes Thema. Überall sprießen Artikel, Services und Produkte aus dem Boden, die sich mit GitOps schmücken. Aber um herauszufinden, was GitOps denn nun genau ist, was da passiert und wo es her kommt, braucht es bisweilen eine Ewigkeit. lesen

„Alle Kubernetes-Cluster sollen von Cloud Foundry profitieren“

Interview mit Chip Childers, Cloud Foundry Foundation

„Alle Kubernetes-Cluster sollen von Cloud Foundry profitieren“

„KubeCF“ ist eine Open-Source-Distribution der Cloud Foundry Application Runtime (CFAR), die auf „Kubernetes“ laufen soll. Ursprünglich von Suse ins Spiel gebracht, handelt es sich seit März dieses Jahres um ein Inkubationsprojekt der Cloud Foundry Foundation. Von heute ist die Nachricht, dass Abby Kearns ihren Posten bei der Organisation als Executive Director aufgibt und Chip Childers ihn übernimmt. Datacenter-Insider hat ihn interviewt. lesen

Was ist CRI-O?

Definition „Container Runtime Interface using OCI“

Was ist CRI-O?

CRI-O ist eine Implementierung des Kubernetes CRI, sprich Container Runtime Interface von Red Hat. Container sollen sich damit deutlich einfacher verwalten lassen, da die Notwendigkeit entfällt, zusätzlichen Code ausführen. Gleiches gilt für ein etwaiges Tooling. lesen

AWS Lightsail für „Let’s Encrypt“-Zertifikate einrichten

Sichere Website auf AWS mit Minimalaufwand, Teil 1

AWS Lightsail für „Let’s Encrypt“-Zertifikate einrichten

AWS Lightsail ist eine gangbare Option zur Bereitstellung von Websites und Web Apps. Möchte man eine solche Lightsail-Website mit einem SSL-Zertifikat versehen, klappt das z. B. mit Let´s Encrypt, wie dieser zweiteilige Workshop demonstriert. lesen

Das sichere Manövrieren von Software-Containern

Security-Management für das IoT-Edge

Das sichere Manövrieren von Software-Containern

Das Rechenzentrum der Zukunft muss die Ränder mit den Sensoren vor Ort sicher handhaben können. Trusted Container Management-Systeme wie „Docker Enterprise“ mit einem hardwarebasierten Trust-System wie TPM zu verheiraten, ist dabei ein durchaus bedenkenswerter Ansatz. lesen

Container-Orchestrierung mit Red Hat OpenShift

Auf Kubernetes basierende Platform as a Service

Container-Orchestrierung mit Red Hat OpenShift

Ein Kubernetes-Cluster mit Docker-Containern zu pflegen ist keine ganz triviale Angelegenheit. Red Hat OpenShift setzt sich über diesen Kosmos und vereinfacht die Verwaltung von Clustern und vor allem das Deployment von Anwendungen. lesen

Kubernetes-basierte Tools – die Erben von Jenkins

Argo, InfraBox und Tekton / Jenkins X

Kubernetes-basierte Tools – die Erben von Jenkins

Jenkins ist der Platzhirsch unter den CI- und CD-Lösungen, hat aber wohl seine besten Jahre hinter sich. Neue, vielversprechende Tools drängen auf den Markt, die Technologien wie Kubernetes nicht nur als Option, sondern als native Plattform begreifen und daraus immensen Nutzen ziehen. 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)