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

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

Docker-Clients, Konfiguration und wichtige Befehle

Docker-Einführung, Teil 6

Docker-Clients, Konfiguration und wichtige Befehle

Docker-Nutzer dürften traditionell keine Berührungsängste mit Kommandozeilen haben. CLI-Befehle sind zur Konfiguration und Steuerung der schnellste Weg. Mit Kitematic steht für Einsteiger aber auch ein grafischer Client bereit, insbesondere zum Einrichten von Storage und Netzwerk-Funktionen. lesen

Docker-Bereitstellung unter Ubuntu Linux

Docker-Einführung, Teil 4

Docker-Bereitstellung unter Ubuntu Linux

Endlich können wir uns mit der Installation und Inbetriebnahme von Docker und der Bereitstellung erster Container befassen. Mit einem MySQL-Server-Container spielen wir diesen Vorgang exemplarisch durch. 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

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

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44623069 / Definitionen)