Login
Newsletter
Werbung

Mi, 6. Mai 2015, 15:00

Anwendungen mit Docker isolieren

Schneller und vor allem schlanker als virtuelle Maschinen: Docker packt Linux-Anwendungen in abgeschottete Container, die sich leicht zwischen Linux-Systemen verschieben lassen.

Wo es »nur« um die Bereitstellung einzelner, isolierter Anwendungen oder Server-Prozesse geht, ist Virtualisierung in Sachen Ressourcenbedarf eine teure Technik. Denn eine VM braucht ein komplettes Gastbetriebssystem, das Arbeitsspeicher und CPU-Leistung belegt. Der Hypervisor muss dafür genügend Hardware emulieren. Zudem verlangt das virtuelle System Pflege und Administrationsaufwand wie ein realer Rechner. Eine Antwort auf das Ressourcenproblem ist Docker, das einen deutlich anderen Weg einschlägt.

Container statt virtuelle Maschinen

Docker ist eine junge Technik, die seit Anfang 2014 Linux-Größen wie Red Hat, IBM, Google und Microsoft in Atem hält. Docker vereint Kernel-Virtualisierung mit Anwendungs-Sandboxen: Statt eines kompletten Betriebssystems virtualisiert Docker nur Teile davon. Einen aufwendigen Hypervisor spart es sich und setzt direkt auf dem laufenden Linux-Kernel auf, ohne eine neue Kernel-Instanz zu starten. Der Clou ist, dass Docker geschickt die vorhandenen Fähigkeiten des Kernels verwendet, um isolierte Container für Programme bereitzustellen: Control Groups (Cgroups) limitieren Speicher, CPU-Zyklen, I/O-Leistung für einen Prozess und Kernel-Namespaces isolieren Prozesse strikt voneinander. Für seine virtuellen Festplatten-Images, die Snapshots und Layer unterstützen, kommen wahlweise die Dateisysteme BTRFS oder AUFS zum Einsatz. Docker dient für alle Komponenten als Verwaltungswerkzeug und definiert ein portables Container-Format, das es erlaubt, Container zwischen Linux-Systemen zu verschieben.

Architektur eines Hypervisors und Docker im Vergleich

David Wolski

Architektur eines Hypervisors und Docker im Vergleich

Ein weiterer Pluspunkt ist, dass man bei Docker kein Gastbetriebssystem installieren muss. Docker macht System-Images verbreiteter Linux-Distributionen über ein Online-Verzeichnis verfügbar. Zum Start eines Containers kann Docker einfach das gewünschte Gastsystem über eine Internetverbindung herunterladen. Es gibt aber auch Einschränkungen, die das Docker-Konzept bedingt: Die Technik eignet sich nicht zur Vollvirtualisierung von Betriebssystemen, da Docker-Container immer den Linux-Kernel des Host-Systems mitbenutzen. Dementsprechend können Container natürlich auch nur Linux-Systeme und Linux-Programme enthalten.

Docker kann außerdem keine Hardware oder gar andere Prozessorplattformen emulieren. Das Konzept hat also mehr mit einer Chroot-Umgebung oder mit Free-BSD-Jails gemein als mit Virtualisierung.

Entwickelt hat Docker der französische Auswanderer Solomon Hykes, heute ein Wunderkind in Silicon Valley. Docker 1.0 erschien im Juni 2014 und ist fit für den produktiven Einsatz. Glaubt man den Investoren, die Docker gerade mit einem Kapitalsegen von 40 Millionen US-Dollar überschüttet haben, dann ist Docker die interessanteste Linux-Technologie seit Jahren und wird Virtualisierung im Server- und Cloud-Umfeld nochmals revolutionieren. Auch Software-Hersteller können recht einfach ganze Server-Installationen mit ihren Produkten per Docker-Image oder Docker-Skripten ausliefern.

Aber auch auf einzelnen Linux-PCs, die als Heim-Server oder als Entwicklungsrechner dienen, kann Docker seine Vorzüge ausspielen.

Docker einrichten und der erste Test

Der Hype um Docker hat erfreulicherweise dazu geführt, dass Docker in den aktuellen Versionen populärer Linux-Distributionen enthalten ist. In Ubuntu 14.04/14.10, Fedora 20, CentOS 7 und Open Suse 13.2 steht Docker zur einfachen Installation über den Paketmanager bereit. In Ubuntu 14.04/14.10 und seinen Varianten heißt das Paket »docker.io« und ist mit

sudo apt-get install docker.io

schnell installiert, da das Paket mit allen Abhängigkeiten nur etwa 50 MB schwer ist. Docker läuft als Systemdienst mit root-Rechten, und auch der Client braucht privilegierte Rechte. Treten Sie der Gruppe »docker« mit dem Kommando

sudo usermod -a -G docker [Benutzername]

bei, damit Sie den Docker-Client ohne sudo aufrufen können. Danach empfiehlt sich ein Neustart, damit der Docker-Dienst läuft und die neue Gruppenmitgliedschaft gültig ist. Als ersten Test können Sie einen Container mit Bash in einem virtuellen CentOS starten:

docker run -i -t centos /bin/bash

Docker lädt hier automatisch ein minimales Image von CentOS herunter (80 MB) und startet die Shell in dieser isolierten Umgebung. Eine durchsuchbare Datenbank aller Images gibt es unter https://registry.hub.docker.com. Images legt Docker permanent im Verzeichnis /var/lib/docker ab. Mit exit beenden Sie diese Shell wieder und schließen den Container.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung