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

Die Umstellung auf DevSecOps

Palo Alto Networks über Security und Container

Die Umstellung auf DevSecOps

Container-technologien sind für Unternehmen eine gute Gelegenheit, die Sicherheitsstrategie anzupassen: DevSecOps bringt Development- und Security-Teams näher zusammen, zeigt Palo Alto Networks sich zuversichtlich. Der Lösungsanbieter hat sich eingehender damit beschäftigt. lesen

Microsoft lädt zum Azure Discovery Day 2019

Fokus auf DevOps, Serverless, Daten und KI

Microsoft lädt zum Azure Discovery Day 2019

DevOps, Serverless und Künstliche Intelligenz: Dies sind drei Schwerpunkte des diesjährigen Microsoft Azure Discovery Day. Entwickler und IT-Mitarbeiter können an zwei Terminen ihr Know-how zur PaaS-Lösung vertiefen und neue Möglichkeiten entdecken. lesen

Eigene Laufzeitumgebungen in AWS Lambda

Runtime und Docker Images als Lambda-Layer

Eigene Laufzeitumgebungen in AWS Lambda

„Wir haben eine Anwendung mit Hilfe von Elixir implementiert und würden diese gerne in AWS Lambda laufen lassen. Welche Möglichkeiten existieren für die Erstellung eigener Laufzeitumgebungen in AWS Lambda?“ lesen

Continuous Delivery for Puppet Enterprise 2.3 veröffentlicht

Bessere Docker-Container- und LDAP-Unterstützung

Continuous Delivery for Puppet Enterprise 2.3 veröffentlicht

Schnellere Inbetriebnahme, LDAP-Integration und bessere Docker-Unterstützung: Die neue Version von Continuous Delivery for Puppet Enterprise soll etliche Verbesserungen für den Betrieb in großen Unternehmen bieten. lesen

Intel Nauta hilft bei Umsetzung von KI-Lösungen

Deep-Learning-Plattform mit Kubernetes-Anbindung

Intel Nauta hilft bei Umsetzung von KI-Lösungen

Mit der Open-Source-Plattform Nauta will Intel bei der Implementierung von Deep Learning und Künstlicher Intelligenz helfen. Im Fokus stehen dabei die Anforderungen in den Bereichen Development und Big Data Science. lesen

Apache Airflow ist Top-Level-Projekt der ASF

Big-Data-Tool der Apache Software Foundation

Apache Airflow ist Top-Level-Projekt der ASF

Das Big-Data-Tool Apache Airflow ist der sogenannten Inkubationsphase entwachsen und wird von ASF, der Apache Software Foundation, fortan als Top-Level-Projekt geführt. Airflow dient der Verwaltung von Big-Data-Pipelines. lesen

Prozessverbesserung mit DevOps

Mauern zwischen Entwicklung und Betrieb einreißen

Prozessverbesserung mit DevOps

DevOps ist aus der aktuellen Marktanforderung entstanden, anspruchsvolle Kundenerwartungen wie eine hohe Produktqualität oder die pünktliche Fertigstellung von Projekten zu erfüllen. Doch wie lässt sich eine reibungslose Zusammenarbeit von Softwareentwicklung und IT-Betrieb sicherstellen? lesen

Docker Desktop Enterprise

Container unter Mac und Windows nutzen

Docker Desktop Enterprise

Docker bietet Unternehmen eine neue Möglichkeit, Container-basierte Anwendungen auf Desktops bereitzustellen. Das Unternehmen kündigte „Docker Desktop Enterprise“ auf der DockerCon-Konferenz in Barcelona an. lesen

Quantencomputer, Kubernetes und weitere Makrotrends

ThoughtWorks Technology Radar November 2018

Quantencomputer, Kubernetes und weitere Makrotrends

Tools, Techniken, Programmiersprachen und Plattformen: der ThoughtWorks Technology Radar identifiziert zwei Mal im Jahr die wichtigsten Makrotrends. Hier gehen wir nun auf die wichtigsten Entwicklungen in der Welt der Unternehmenstechnologie ein. 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)