Docker
Was ist ein Docker?
Definition
Docker ist ein Computerprogramm, das eine Virtualisierung auf Betriebssystemebene durchführt, die auch als “Containerisierung” bezeichnet wird. Es wurde erstmals im Jahr 2013 veröffentlicht und wird von Docker Inc. entwickelt.
Ziel
Docker wird zum Ausführen von Softwarepaketen verwendet, die als “Container” bezeichnet werden. Container sind voneinander isoliert und bündeln ihre eigene Anwendung, Tools, Bibliotheken und Konfigurationsdateien. Sie können über genau definierte Kanäle miteinander kommunizieren.
Alle Container werden von einem einzigen Betriebssystem betrieben und sind daher leichter als virtuelle Maschinen. Sie werden aus Bildern erstellt, die ihren genauen Inhalt angeben. Bilder werden häufig durch das Kombinieren und Ändern von Standardbildern erstellt, die aus öffentlichen Repositorien heruntergeladen werden.
Entstehung
Solomon Hykes gründete Docker in Frankreich als internes Projekt innerhalb von dotCloud, einem Unternehmen, das als Plattform für Dienste fungiert und mit ersten Beiträgen anderer dotCloud-Ingenieure arbeitete. Docker stellt eine Weiterentwicklung der proprietären Technologie von dotCloud dar, die auf früheren Open-Source-Projekten wie Cloudlets, basiert.
Docker wurde im März 2013 als Open-Source veröffentlicht und löste 2014 mit dem Release der Version 0.9 LXC als Standard-Ausführungsumgebung ab und ersetzte es durch seine eigene libcontainer-Bibliothek, die in der Programmiersprache “Go” geschrieben wurde, ab.
Technologie
Docker wurde hauptsächlich für Linux entwickelt, wo es die Ressourcen-Isolations-Funktionen des Linux-Kernels (cgroups) und Kernel-Namespaces sowie ein union-fähiges Dateisystem (OverlayFS) und andere verwendet, um die Ausführung unabhängiger Container innerhalb einer einzigen Linux-Instanz sowie den Aufwand für das Starten und Verwalten virtueller Maschinen, zu vermeiden.
Die Unterstützung des Linux-Kernels für Namespaces isoliert meistens die Schicht der Anwendung auf die Betriebsumgebung, einschließlich Prozessbäume, Netzwerk, Benutzer-IDs und angehängte Dateisysteme, während die cgroups des Kernels Ressourcen-Einschränkungen für den Arbeitsspeicher und CPU bereitstellen.
Seit Version 0.9 ist die libcontainer-Bibliothek vorhanden, die als direkte Virtualisierungsmöglichkeit (die vom Linux-Kernel bereitgestellt wird) verwendet wird. Außerdem werden abstrahierte Virtualisierungsschnittstellen über libvirt, LXC (Linux-Container) und systemd-nspawn, verwendet.
Neben den Funktionen des Linux-Kernels (hauptsächlich Gruppen und Namespaces) erfordert ein Container im Gegensatz zu einer virtuellen Maschine kein separates Betriebssystem. Stattdessen stützt es sich auf die Funktionen des Kernels und verwendet Ressourcen-Isolierung für CPU und den Arbeitsspeicher sowie separate Namespaces, um die Ansicht der Anwendung auf das Betriebssystem zu isolieren. Es greift auf die Virtualisierungsfunktionen des Linux-Kernels entweder direkt über die libcontainer-Bibliothek zu oder indirekt über libvirt, LXC oder systemd-nspawn.
Komponenten
Die Software besteht aus drei Komponenten:
Zwei der wichtigsten öffentlichen Register sind Docker Hub und Docker Cloud. Hub ist die Standard-Registrierungsdatenbank, in der Docker nach Bildern sucht.
Tools
Die Datei dient zum Definieren der Services einer Anwendung und enthält verschiedene Konfigurationsoptionen.
Funktion
Docker implementiert eine übergeordnete API, um leichtgewichtige Container bereitzustellen, die Prozesse isoliert ausführen. Da der Container leichtgewichtig ist, können ein einzelner Server oder eine virtuelle Maschine mehrere Container gleichzeitig ausführen. Eine Analyse aus dem Jahr 2016 ergab, dass ein typischer Docker-Anwendungsfall die Ausführung von fünf Containern pro Host beinhaltet, dass jedoch viele Organisationen zehn oder mehr ausführen.
Die Verwendung von Containern kann die Erstellung von stark verteilten Systemen vereinfachen, indem mehrere Anwendungen, Worker-Aufgaben und andere Prozesse autonom auf einer einzelnen physischen Maschine oder auf mehreren virtuellen Maschinen ausgeführt werden können. Auf diese Weise kann die Bereitstellung von Knoten durchgeführt werden, sobald die Ressourcen verfügbar werden oder wenn mehr Knoten benötigt werden. Dies ermöglicht einen PaaS-Stil (PaaS) für die Bereitstellung und Skalierung von Systemen wie Apache Cassandra, MongoDB und Riak.
Fact
Im Oktober 2014 gab Microsoft die Integration der Engine in die nächste Windows Server-Version sowie die native Unterstützung der Client-Rolle in Windows bekannt. Im Juni 2016 gab Microsoft bekannt, dass Docker jetzt nativ unter Windows 10 mit Hyper-V-Container zum Erstellen, Versenden und Ausführen von Containern mit dem Windows Server 2016 Technical Preview 5 Nano Server verwendet werden kann.
Sie haben noch Fragen?