Docker

docker

Copyright ┬ę Shutterstock / REDPIXEL.PL

Was ist ein Docker?

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:

Der Daemon ist ein permanenter Prozess, der die Container verwaltet und Objekte verarbeitet. Er wartet auf Anforderungen, die ├╝ber die Engine-API gesendet werden. Das Client-Programm bietet eine Befehlszeilen-Schnittstelle, ├╝ber die Benutzer mit Daemons interagieren k├Ânnen.
Die Objekte sind verschiedene Elemente, die zum Zusammenstellen einer Anwendung verwendet werden. Die Hauptklassen der Objekte sind Bilder, Container und Dienste.
Das Register ist die Quelle f├╝r die Bilder. Die Clients stellen eine Verbindung zu den Registern her, um die Bilder herunterzuladen (“Pull”) oder von ihnen erstellte Bilder (“Push”) hochzuladen. Die Register k├Ânnen ├Âffentlich oder privat sein.
Zwei der wichtigsten ├Âffentlichen Register sind Docker Hub und Docker Cloud. Hub ist die Standard-Registrierungsdatenbank, in der Docker nach Bildern sucht.

Tools

Hierbei handelt es sich um ein Tool zum Definieren und Ausf├╝hren von Anwendungen f├╝r mehrere Container. Es verwendet YAML-Dateien zum Konfigurieren der Anwendungsdienste und f├╝hrt den Erstellungs- und Startvorgang aller Container mit einem einzigen Befehl aus. Mit dem CLI-Hilfsprogramm k├Ânnen Benutzer Befehle f├╝r mehrere Container gleichzeitig ausf├╝hren. Befehle, die sich auf die Bildbearbeitung oder interaktive Optionen f├╝r Benutzer beziehen, sind nicht relevant, da sie einen Container adressieren.
Die Datei dient zum Definieren der Services einer Anwendung und enth├Ąlt verschiedene Konfigurationsoptionen.
Diese Anwendung bietet native Clustering-Funktionen f├╝r die Container, wodurch eine Gruppe von Engines zu einer einzigen virtuellen Engine wird. In der Version 1.12 und h├Âher ist der Swarm-Modus in die Engine integriert. Mit dem Swarm-CLI-Dienstprogramm k├Ânnen Benutzer Swarm-Container ausf├╝hren, Discovery-Token erstellen, Knoten im Cluster auflisten und vieles mehr. Mit dem CLI-Dienstprogramm des Knotens k├Ânnen Benutzer zudem verschiedene Befehle ausf├╝hren, um Knoten in einem Swarm zu verwalten.

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.

F├╝r Windows

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?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte