Definition „Docker“

Was sind Docker-Container?

| Autor / Redakteur: LineFeed / Stephan Augsten

Docker hat den Begriff Container als Alternative zu virtuellen Maschinen überhaupt erst populär gemacht.
Docker hat den Begriff Container als Alternative zu virtuellen Maschinen überhaupt erst populär gemacht. (Bild: Docker, Inc.)

Docker bringt das Konzept der Apps auf den Server. Ein Docker-Container enthält eine Anwendung, aber auch alle Ressourcen, die diese zur Laufzeit benötigt. Seine Vorteile kann Docker besonders gut in Cluster-Umgebungen und Rechenzentren entfalten.

In einem griffigen Satz gefasst ist Docker eine Virtualisierung ohne Virtualisierung. Die Technik dahinter heißt Containerisierung. Docker ist eine Implementierung der Container-Technologie, die sich durch besonders benutzerfreundliche Eigenschaften auszeichnet und den Begriff Container als Alternative zu virtuellen Maschinen überhaupt erst populär gemacht hat.

Ein Container fasst eine einzelne Anwendung mitsamt aller Abhängigkeiten wie Bibliotheken, Hilfsprogrammen und statischer Daten in einer Image-Datei zusammen, ohne aber ein komplettes Betriebssystem zu beinhalten. Daher lassen sich Container mit einer leichtgewichtigen Virtualisierung vergleichen.

Wesentliche Eigenschaften und Vorteile von Containern

Container benötigen weniger Ressourcen als virtuelle Maschinen, da sie auf das Starten eines eigenen Betriebssystems verzichten und stattdessen im Kontext des Host-Betriebssystems laufen. Trotzdem sind die Container gegeneinander und vom Host-System abgeschottet, wenn auch nicht so stark, wie bei einer Virtualisierung. Möglich machen das mehrere Linux Features, unter anderem Namespaces und Cgroups.

Docker-Container werden aus einem Container-Image gestartet, das als einfache Datei leicht von einem System auf ein anderes übertragbar ist. Installation, Update und Deinstallation einer Software reduziert sich daher auf einen einfachen Kopiervorgang beziehungsweise eine einzelne Dateilöschung.

Aus einem Docker-Image heraus lassen sich beliebig viele Container starten, da Schreibzugriffe nicht auf das Container-Image wirken, sondern jeweils auf ein eigenes Dateisystem, das dem Image überlagert ist. Für viele Anwendungen können fertige Container-Images vom Docker-Hub heruntergeladen und unmittelbar gestartet werden. Die Konfiguration ist so weit wie möglich bereits im Image eingerichtet. Variable Teile, wie die Netzwerkkonfiguration, werden beim Start automatisch angelegt.

Ein bedeutender Vorteil der Docker-Container ist die gute Skalierbarkeit. Werden zusätzliche Instanzen einer Anwendung benötigt, dann können einfach neue Container gestartet werden, und nach dem Stoppen sind sie wieder vollständig aus dem System verschwunden. Die Verwaltung einer größeren Anzahl von Containern erleichtern Werkzeuge für die Container-Orchestrierung, zum Beispiel Google Kubernetes.

Docker-Container bei der Software-Entwicklung nutzen

Anwendungsvirtualisierung

Docker-Container bei der Software-Entwicklung nutzen

15.03.17 - Mit der Open-Source-Virtualisierung Docker lassen sich Anwendungen in geschützten VM-Containern einrichten, entwickeln und nutzen. Durch System-Level-Virtualisierung bleibt der Overhead gegenüber VirtualBox und Co. aber klein – und die Anwendung frei migrier- und skalierbar. lesen

Software-Voraussetzungen für Docker

Mit Linux Namespaces lassen sich seit Kernel-Version 2.4.19 einzelne Prozesse in einen vorgegebenen Unterbereich des Dateisystems einsperren. Das ähnelt einem klassischen Change Root, bei dem ein Prozess über den Systemaufruf chroot das für ihn selbst sichtbare Dateisystem auf einen Unterbaum des Gesamtsystems beschränkt. In späteren Versionen wurde das Namespace-Konzept auf weitere Ressourcen erweitert.

In der Linux-Kernel-Version 4.10 sind die zusätzlichen Namespaces Prozess-ID (PID), Netzwerk, Interprozess-Kommunikation (IPC), Host- und Domainnamen (UTS) und User-ID (UID) nutzbar. Jeder Namespace verwaltet einen eigenen Satz der entsprechenden Ressource, unabhängig vom Hauptsystem. Dadurch ist es zum Beispiel möglich, dass der Superuser root im Container mit der gewohnten UID 0 erscheint, im Hauptsystem aber eine unprivilegierte UID hat.

Linux Cgroups bieten eine ähnliche Funktionalität wie Namespaces, indem sie die verfügbaren Ressourcen für bestimmte Prozesse einschränken, beispielsweise den Hauptspeicher. Sie wirken aber auf Gruppen von Prozessen und ermöglichen darüber hinaus eine separate Berechnung des Ressourcenverbrauchs innerhalb der jeweiligen Gruppe, sowie das gemeinsame Einfrieren und Aufwecken der Prozesse.

Mit Linux Namespaces und Cgroups lassen sich wesentliche Eigenschaften eines Linux-Betriebssystems innerhalb eines Containers emulieren. Für die im Container laufende Software wirkt er daher wie ein eigenständiges System, ohne dass eine vollständige Virtualisierung nötig wäre.

Nachteile der Containerisierung

Der Verzicht auf den Einschluss eines Betriebssystems in den Inhalt der Container-Images bedeutet eine gegenüber der Virtualisierung reduzierte Abschottung. Ähnliches trifft aber ebenfalls auf die Virtualisierung zu, die eine schwächere Trennung gegenüber jeweils eigenen, dedizierten Servern bietet.

Gleichzeitig kann der Verzicht auf ein komplettes Betriebssystem im Container aber auch eine höhere Sicherheit bieten, da ausschließlich die Software vorhanden sein muss, die von der Anwendung im Container benötigt wird. Das reduziert die Anzahl generischer Werkzeuge des Betriebssystems, die ein Angreifer ausnützen könnte.

Docker auf anderen Systemen als Linux

Docker ist zwar im Linux-Umfeld entstanden und entsprechend fokussiert sich die Beschreibung in diesem Text auf Linux-Betriebssysteme. Docker-Container lassen sich mittlerweile aber ebenfalls unter Mac OS und Windows nutzen, in Windows 10 beispielsweise auch nativ über Hyper-V.

Docker und andere Container unter Windows

Grundlagenwissen Container

Docker und andere Container unter Windows

12.01.17 - Die Container-Technologie Docker hat ihren Weg in Windows Server 2016 und die Cloud gefunden. Den Beweis, dass Container zahlreiche Vorteile für Entwickler und Unternehmen bieten, konnten sie schon unter Linux antreten. lesen

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

Welche Entwickler-Plattformen in der Cloud gibt es?

Marktübersicht zu Cloud Native Development

Welche Entwickler-Plattformen in der Cloud gibt es?

Vor der Cloud-Native-Entwicklung steht die Auswahl einer entsprechenden Plattform. Neben den großen Playern Amazon, Google und Microsoft gibt es eine Reihe Alternativen, die durchaus einen Blick wert sind. lesen

6 Cloud-Native-Versprechen

Vorteile in der Cloud entwickelter Software

6 Cloud-Native-Versprechen

Cloud Native Development verspricht robuste und agile Softwareentwicklung mit leistungsstarken Ergebnissen. Statt sich um die Infrastruktur und ihre Eigenheiten zu kümmern, können Entwickler sich voll und ganz auf die eigentliche Softwareentwicklung konzentrieren. lesen

Container-Orchestrierung mit Rancher

Einfacher Einstieg in Kubernetes

Container-Orchestrierung mit Rancher

Der Weg in die Container-Welt führt durch beängstigend lange Docker-Canyons und direkt in das nicht minder Furcht einflößende Kubernetes-Tal. Muss aber nicht sein, denn ein freundlicher Rancher bietet Hilfe an. Aber was genau ist Rancher und wie geht es los? lesen

Gründe für Cloud Foundry

Cloud-agnostische Softwareentwicklung, Teil 1

Gründe für Cloud Foundry

Das gefürchtete Phänomen des Vendor-Lock-In macht den Entwicklern in verteilten Cloud-Anwendungen zu schaffen. Die Echtzeit-Portabilität von Code zwischen Ausführungsumgebungen verschiedener Anbieter wird dank Lösungen wie Cloud Foundry dennoch Realität. 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

Das Deployment-Tool Spinnaker unter Cloud Foundry

Continuous Delivery in der Cloud, Teil 1

Das Deployment-Tool Spinnaker unter Cloud Foundry

Was nützt es agil zu sein, wenn fertig entwickelte und den Integrationstest erfolgreich absolvierte Code-Änderungen nicht schnell genug ausgeliefert werden können? Das Open-Source-Tool Spinnaker ist dabei eine wertvolle Unterstützung. lesen

copyright

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