Docker Schnellstart – Grundlagen zu Docker & Containern
Was ist Docker?
Docker ist ein Tool, das es Entwicklern, Systemadministratoren etc. ermöglicht, ihre Anwendungen in einer Sandbox (genannt Container) auf einfache Weise auf einem Host-Betriebssystem, z.B. Linux, laufen zu lassen. Der Hauptvorteil von Docker ist, dass es dem Benutzer erlaubt, eine Anwendung mit all ihren Abhängigkeiten in eine standardisierte Einheit für die Softwareentwicklung zu verpacken. Im Gegensatz zu virtuellen Maschinen haben Container keinen hohen Overhead und ermöglichen somit eine effizientere Nutzung des zugrunde liegenden Systems und der Ressourcen.
Was sind Container?
Der heutige Industriestandard ist es, virtuelle Maschinen (VMs) zu verwenden, um Softwareanwendungen auszuführen. VMs führen Anwendungen innerhalb eines Gastbetriebssystems aus, das auf virtueller Hardware läuft, die vom Hostbetriebssystem des Servers betrieben wird.
VMs sind großartig, wenn es darum geht, eine vollständige Prozessisolierung für Anwendungen zu gewährleisten: Es gibt nur sehr wenige Möglichkeiten, wie ein Problem im Host-Betriebssystem die Software, die im Gast-Betriebssystem läuft, beeinflussen kann und umgekehrt. Aber diese Isolation hat ihren Preis - der Rechenaufwand für die Virtualisierung der Hardware, die das Gastbetriebssystem nutzen soll, ist beträchtlich.
Container verfolgen einen anderen Ansatz: Indem sie die Low-Level-Mechanik des Host-Betriebssystems nutzen, bieten Container einen Großteil der Isolation von virtuellen Maschinen bei einem Bruchteil der Rechenleistung.
Warum Container verwenden?
Container bieten einen logischen Package-Mechanismus, in dem Anwendungen von der Umgebung, in der sie tatsächlich laufen, abstrahiert werden können. Durch diese Entkopplung können Container-basierte Anwendungen einfach und konsistent bereitgestellt werden, unabhängig davon, ob die Zielumgebung ein privates Rechenzentrum, die öffentliche Cloud oder sogar der persönliche Laptop eines Entwicklers ist.
Das gibt Entwicklern die Möglichkeit, vorhersehbare Umgebungen zu erstellen, die vom Rest der Anwendungen isoliert sind und überall ausgeführt werden können.
Aus betrieblicher Sicht bieten Container neben der Portabilität auch eine granulare Kontrolle über die Ressourcen, was zu einer verbesserten Effizienz deiner Infrastruktur führt und wiederum eine bessere Auslastung deiner Rechenressourcen zur Folge haben kann.
Aufgrund dieser Vorteile haben Container (& Docker) viel Beliebtheit gewonnen in den letzten Jahren. Unternehmen wie Google, Facebook, Netflix und Salesforce nutzen Container, um große Entwicklungsteams produktiver zu machen und die Auslastung von Rechenressourcen zu verbessern. Google schreibt Containern sogar zu, dass sie ein ganzes Rechenzentrum überflüssig machen.