Was ist, macht Docker – Containervirtualisierung

b9f02d68f5a342acaa65e78b9ff1244b

Was ist Docker?

Docker ist eine kostenlose Software, die Container-Virtualisierung verwendet, um Anwendungen zu isolieren.

Docker vereinfacht die Bereitstellungen von Anwendungen, da ein Container mit allen benötigten Paketen einfach als Datei übertragen und installiert werden kann. Container sorgen für die Trennung und Verwaltung von Ressourcen, die auf einem Computer verwendet werden. Dazu gehören laut den Entwicklern: Code, Laufzeitmodule, Systemtools, Systembibliotheken – alles, was auf einem Rechner installiert werden kann.

Wie arbeitet, funktioniert Docker?

Docker implementiert Container basierend auf Linux-Technologien wie Cgroups und Namespaces.

Während zunächst die LXC-Schnittstelle zum Linux-Kernel genutzt wurde, haben die Docker-Entwickler inzwischen eine eigene Programmierschnittstelle namens libcontainer entwickelt, die auch für andere Projekte zur Verfügung steht.

Als Speicher-Backend nutzt Docker das Overlay-Dateisystem aufs, seit Version 0.8 aber auch btrfs.

Im Prinzip wurde Docker für die Linux-Virtualisierung konzipiert. Docker kann jedoch auch Hyper-V oder VirtualBox unter Windows und HyperKit oder VirtualBox unter macOS verwenden. Da es nicht völlig sicher ist, Ressourcen allein mit den zugrunde liegenden Technologien von Docker wie Namespaces und Cgroups zu trennen, hat Red Hat die Unterstützung für die sicherheitsrelevante Kernel-Erweiterung SELinux implementiert, die Container zusätzlich auf Hostsystemebene schützen kann.

Zusammenfassung

Docker ist eine Plattform zur Containerisierung von Anwendungen, die es ermöglicht, Software in sogenannten Containern zu verpacken und zu betreiben. Ein Container ist eine leichtgewichtige, eigenständige, ausführbare Softwarepaketeinheit, die alles enthält, was benötigt wird, um eine Anwendung auszuführen: Code, Laufzeit, Systemtools, Systembibliotheken und Einstellungen.

Hier sind einige Schlüsselfunktionen und Vorteile von Docker und der Containerisierung:

  1. Isolation und Konsistenz: Jeder Docker-Container wird isoliert betrieben und hat seine eigene Umgebung und Ressourcen, unabhängig von anderen Containern. Das bedeutet, dass Anwendungen in verschiedenen Containern sich gegenseitig nicht stören können. Dies sorgt für Konsistenz, da die Anwendung immer in der gleichen Umgebung läuft, unabhängig davon, wo der Container ausgeführt wird.
  2. Leichtgewichtigkeit: Container teilen sich den gleichen Kernel des Host-Betriebssystems, sind aber voneinander isoliert. Sie sind viel leichtgewichtiger als traditionelle virtuelle Maschinen, da sie keine eigene Betriebssysteminstanz benötigen.
  3. Portierbarkeit: Da ein Docker-Container alles enthält, was eine Anwendung zum Laufen benötigt, kann er leicht von einer Entwicklungsumgebung in eine Test- oder Produktionsumgebung übertragen werden, ohne dass dabei Kompatibilitätsprobleme auftreten.
  4. Skalierbarkeit und Verwaltung: Docker vereinfacht die Bereitstellung und Skalierung von Anwendungen. Es ist möglich, schnell mehrere Containerinstanzen einer Anwendung zu starten oder zu stoppen, was besonders in einer Microservice-Architektur nützlich ist.
  5. Ökosystem und Gemeinschaft: Docker hat ein umfangreiches Ökosystem und eine aktive Gemeinschaft. Es gibt eine große Auswahl an vorbereiteten „Docker-Images“ für verschiedene Anwendungen und Dienste, die man leicht für eigene Zwecke verwenden kann.
  6. Entwicklung und Deployment: Docker unterstützt Entwickler dabei, Anwendungen in einer Umgebung zu erstellen, die der Produktionsumgebung ähnlich ist, was das Risiko von Fehlern bei der Übertragung zwischen den Umgebungen reduziert.

Docker hat sich zu einer Schlüsseltechnologie in der Welt der Softwareentwicklung und des Cloud-Computings entwickelt, da es den Entwicklungs- und Bereitstellungsprozess vereinfacht und effizienter macht.