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

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

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

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

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

Low-Code-Plattform hilft bei Altsystem-Modernisierung

OutSystems 11 unterstützt Microservices und Container

Low-Code-Plattform hilft bei Altsystem-Modernisierung

Die OutSystems-Plattform des gleichnamigen Low-Code-Experten wird auf Version 11 angehoben. Die Verbesserungen sollen der Modernisierung von Legacy-Systemen dienen, sechs neue Funktionen wurden hierfür in OutSystems 11 integriert. 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)