Das um­fang­rei­che Docker-Ökosystem eröffnet dir als Ent­wick­ler:in zahl­rei­che Wege, An­wen­dun­gen zu deployen oder Container zu or­ches­trie­ren. Wir stellen dir die re­le­van­tes­ten Docker-Tools vor und zeigen dir beliebte Open-Source-Projekte von Dritt­an­bie­tern, die das Ökosystem erweitern.

Die wich­tigs­ten Docker-Kom­po­nen­ten im Überblick

Docker hat sich längst von einer reinen Plattform für Software-Container zu einem mächtigen Werk­zeug­kas­ten ent­wi­ckelt. Damit du deine An­wen­dun­gen über ver­schie­de­ne In­fra­struk­tu­ren und Cloud-Lösungen hinweg flexibel ausrollen kannst, bietet dir world4you mit der Kern-Software ver­schie­de­ne Docker-Tools an. Neben Funk­tio­nen für Cluster und Or­ches­trie­rung erhältst du Zugriff auf einen App-Markt­platz sowie Tools zur Ver­wal­tung deiner Res­sour­cen.

Docker-Engine

Wenn die Rede von „Docker“ ist, meint man meist die quell­of­fe­ne Client-Server-Anwendung hinter der Plattform. In der Fach­spra­che nennen wir das „Docker-Engine“. Sie besteht im Kern aus dem Docker-Daemon, einer REST-API und dem CLI (Command Line Interface). Dank dieses Aufbaus steuerst du die Engine direkt über das Terminal und ver­wal­test Images, Do­cker­files und Container mit einfachen Befehlen. Dabei können Client und Daemon sogar auf un­ter­schied­li­chen Systemen laufen. Eine Liste der gängigen Docker-Befehle findest du in unserem Detail-Artikel.

Bild: Aufbau der Docker-Engine
Die Kern­ele­men­te: Docker-Daemon, REST-API und Docker CLI

Docker-Hub

Der Docker-Hub dient dir als cloud­ba­sier­te Registry. Hier kannst du Images laden, zentral verwalten und mit der Community teilen. Als an­ge­mel­de­te Person ent­schei­dest du, ob du deine Images öf­fent­lich oder in privaten Bereichen (Re­po­si­to­rys) sicherst. Ein Tag-System hilft dir dabei, ver­schie­de­ne Versionen sauber zu trennen.

Im Hub warten zudem tausende Res­sour­cen in of­fi­zi­el­len Archiven auf dich – be­reit­ge­stellt vom Docker-Team selbst oder bekannten Open-Source-Größen. Besonders gefragt sind der Webserver NGINX, die In-Memory-Datenbank Redis, BusyBox oder die Linux-Basis Ubuntu.

Bild: Übersicht der Repositorys im Docker-Hub
Nutze über 100 000 Gratis-Images für dein Docker-Projekt

Praktisch sind auch die „Or­ga­niza­ti­ons“: Diese Ar­beits­grup­pen erlauben es dir, private Re­po­si­to­rys gezielt für dein Team frei­zu­ge­ben. Die Rechte steuerst du dabei ganz einfach über die Team­zu­ge­hö­rig­keit.

Docker Swarm

Direkt in der Engine findest du Funk­tio­nen, um Docker-Hosts in Clustern (Swarms bzw. Schwärmen) zu bündeln. Diese in­te­grier­ten Features basieren auf dem Toolkit Swarmkit.

Mit Swarm fasst du diesen Pool zu einem einzigen vir­tu­el­len Host zusammen. Jedes Tool, das mit dem Docker-Daemon spricht, kann so auf den Schwarm zugreifen und die An­wen­dun­gen skalieren. Du nutzt einfach das bekannte CLI, um Cluster zu bauen und An­wen­dun­gen zu verteilen. Eine extra Or­ches­trie­rungs-Software brauchst du nicht.

Sobald du einen Host zu einem Schwarm machst, läuft er im Swarm-Mode. Die einzelnen Teil­neh­mer heißen „Knoten“ (Nodes). Diese können lokal exis­tie­ren, meist verteilt man sie aber über ver­schie­de­ne Cloud-Systeme für maximale Aus­fall­si­cher­heit.

Das System nutzt eine Master-Slave-Struktur. Willst du etwas erledigen, gibst du einen „Service“ an den Manager-Node (Master) weiter. Er plant das Sche­du­ling der Container und ist deine Schnitt­stel­le zum Schwarm.

Der Master teilt die Arbeit in „Tasks“ auf und schickt diese an die Worker-Nodes (Slaves).

  • Services: Das Herzstück im Cluster. Ein Service ist eine Gruppe iden­ti­scher Container. Er legt fest, welches Image genutzt wird und welche Befehle laufen. Hier steuerst du auch die Ska­lie­rung: Gib einfach an, wie viele Instanzen gleich­zei­tig aktiv sein sollen.
  • Tasks: Der Manager zerlegt Services in diese kleinen Einheiten. Ein Task enthält jeweils einen Container samt seiner An­wei­sun­gen.

Stan­dard­mä­ßig übernimmt ein Manager-Node auch Worker-Aufgaben, außer du kon­fi­gu­rierst ihn rein für die Ver­wal­tung.

Auf den Workern sorgt ein Agent-Programm für den rei­bungs­lo­sen Ablauf und meldet den Status zurück an den Master. Hier siehst du das Prinzip im Überblick:

Bild: Aufbau eines Docker-Schwarms
So funk­tio­niert die Master-Slave-Struktur im Schwarm

Für die Ein­rich­tung nutzen viele Profis zu­sätz­lich die Docker-Machine.

Docker Compose

Mit Docker Compose ver­knüpfst du mehrere Container zu einer Einheit und startest sie zeit­gleich. Alles wird in einer zentralen Datei auf YAML-Basis definiert. Wenn du Vagrant kennst, wird dir die Syntax sehr vertraut vorkommen.

In der docker-compose.yml hältst du fest, welche Container wie zu­sam­men­ar­bei­ten. Den gesamten Zyklus steuerst du bequem über den Befehl docker-compose – egal ob lokal oder auf ver­teil­ten Systemen.

Besonders stark: Compose lässt sich direkt in Swarm-Cluster einbinden. Zudem bietet es einen Me­cha­nis­mus zur Ska­lie­rung, mit dem du per Kom­man­do­zei­le festlegst, wie oft ein Service gestartet wird.

Externe Tools für dein Docker-Setup

Neben den Bord­mit­teln von Docker Inc. gibt es eine riesige Auswahl an externen Software-Lösungen. Diese nutzen meist die Docker-Schnitt­stel­len oder sind exakt darauf zu­ge­schnit­ten. Zu den Stars der Open-Source-Szene gehören Ku­ber­netes, Shipyard für das Ma­nage­ment, Panamax für das Shipping, die CI-Plattform Drone sowie Cloud-Systeme wie OpenStack oder D2iQ DC/OS.

Ku­ber­netes

Früher hatte Docker keine eigenen Or­ches­trie­rungs-Tools wie Swarm an Bord. Deshalb ent­wi­ckel­ten Firmen eigene Lösungen, um Container in großen Um­ge­bun­gen zu bändigen. Das Ergebnis ist Ku­ber­netes (oft K8s abgekürzt).

Ku­ber­netes ist ein Manager für Container-Cluster mit dem Ziel, Abläufe zu au­to­ma­ti­sie­ren. Gesteuert wird alles via API, Terminal oder Web-Interface. Mit Ku­ber­netes kannst du:

  • An­wen­dun­gen auf Clustern betreiben,
  • Container-Setups zentral verwalten,
  • Res­sour­cen dynamisch skalieren und
  • deine Hardware ideal auslasten.

Die kleinste Einheit sind dabei „Pods“ – logische Gruppen von Con­tai­nern, die gemeinsam auf die Reise durch das Cluster geschickt werden.

Auch hier begegnet uns die Master-Slave-Ar­chi­tek­tur. Ein Master (Control Plane) steuert die Worker-Nodes (Minions). Der Master nutzt dafür vier Säulen: den API-Server, den Speicher etcd, den Scheduler und den Con­trol­ler-Manager.

  • API-Server: Das Tor zum Cluster. Alle Befehle laufen hier über die REST-Schnitt­stel­le zusammen.
  • etcd: Das Ge­dächt­nis des Clusters. Dieser Key-Value-Store sichert alle Kon­fi­gu­ra­tio­nen und teilt sie den Knoten mit.
  • Scheduler: Der Planer. Er ent­schei­det anhand der ver­füg­ba­ren Hardware, welcher Pod auf welchem Knoten landet.
  • Con­trol­ler-Manager: Der Wächter. Er prüft ständig, ob der Ist-Zustand deines Clusters noch mit deinen Vorgaben über­ein­stimmt, und greift bei Bedarf ein.

Diese Kom­po­nen­ten können auf einem Server liegen oder für maximale Si­cher­heit auf mehrere Master-Hosts verteilt werden.

Die ei­gent­li­che Arbeit leisten die Nodes. Dort muss eine Container-Engine laufen – meist ist das Docker, wobei Ku­ber­netes auch mit anderen Systemen klarkommt. Zu­sätz­lich braucht jeder Node:

  • kubelet: Der Agent vor Ort. Er hält den Kontakt zum Master und sorgt dafür, dass die Pods wie gewünscht laufen.
  • kube-proxy: Er regelt den Netz­werk­ver­kehr. Er leitet Anfragen von außen an die richtigen Container weiter und bietet einfaches Load-Balancing.

Hier siehst du, wie Ku­ber­netes aufgebaut ist:

Bild: Kubernetes Architektur
Die Struktur hinter der Or­ches­trie­rungs-Plattform Ku­ber­netes

Ergänzend gibt es viele Hilfs­mit­tel: Mo­ni­to­ring-Tools wie Pro­me­theus oder sysdig sowie den Paket-Manager Helm. Auch für Java-Ent­wick­ler:innen gibt es passende Schnitt­stel­len via Maven oder Gradle.

Shipyard

Shipyard ist ein Community-Projekt für Swarm. Es bietet dir eine grafische Ober­flä­che im Browser, um Container, Images und Hosts intuitiv zu verwalten. Die Software ist voll kom­pa­ti­bel zur Docker-API und nutzt RethinkDB für die Da­ten­hal­tung.

Neben dem Ma­nage­ment via Web-UI bietet Shipyard eine Be­nut­zer­ver­wal­tung mit Rollen und Rechten. Es besteht aus drei Teilen:

  • Con­trol­ler: Das Gehirn. Er spricht mit der Datenbank und steuert die Hosts im Cluster.
  • API: Die Basis. Alle Funk­tio­nen laufen über diese REST-Schnitt­stel­le.
  • User-Interface: Die Ober­flä­che. Eine moderne App, mit der du alles bequem im Blick behältst.

Weitere Details findest du auf der Projekt-Website.

Panamax

Das Tool Panamax will das De­ploy­ment von Multi-Container-Apps so einfach wie möglich machen. Per Drag-and-Drop baust und verteilst du komplexe Setups direkt über eine Web­ober­flä­che.

Deine Kon­fi­gu­ra­tio­nen spei­cherst du als Templates und rollst sie mit einem Klick aus. Über einen Markt­platz auf GitHub kannst du Vorlagen auch mit anderen teilen. Das System un­ter­schei­det zwischen dem Local-Client (deinem Rechner) und den Remote-De­ploy­ment-Targets (den Servern im Cluster).

Der Local-Client ist das Steu­er­zen­trum und läuft idea­ler­wei­se auf CoreOS. Er nutzt folgende Module:

  • CoreOS & Fleet: Als spe­zia­li­sier­te Linux-Basis nutzt CoreOS den Manager „Fleet“ für die Or­ches­trie­rung der Container.
  • Local Agent: Er verbindet alles. Er kom­mu­ni­ziert mit deiner UI, der Docker-API und den Servern im Cluster.

Die De­ploy­ment-Targets sind die Knoten, auf denen deine Apps am Ende laufen. Sie benötigen lediglich den Remote-Agent und einen passenden Adapter (z. B. für Ku­ber­netes oder Fleet), um Befehle von deinem Client zu empfangen.

Bild: Panamax Architektur
So greifen die Kom­po­nen­ten von Panamax in­ein­an­der

Panamax ist ideal, wenn du komplexe Struk­tu­ren grafisch verwalten und dabei flexibel bei der Or­ches­trie­rung bleiben willst.

Drone

Drone ist eine schlanke Plattform für Con­ti­nuous In­te­gra­ti­on. Damit ziehst du dir au­to­ma­tisch den neuesten Code aus Re­po­si­to­rys wie GitHub und testest ihn sofort in iso­lier­ten Con­tai­nern. Du erhältst Berichte direkt per E-Mail und jeder Testlauf startet in einer sauberen Umgebung.

Drone ist perfekt in Docker in­te­griert und un­ter­stützt Sprachen wie PHP, Node.js, Ruby, Go oder Python. Es ist eine tolle Open-Source-Al­ter­na­ti­ve zu Tools wie Jenkins, die oft komplexer in der Hand­ha­bung sind.

OpenStack

Für eigene Cloud-Struk­tu­ren ist OpenStack der Gold­stan­dard. Damit ver­wal­test du Speicher, CPU und Netzwerke deines Re­chen­zen­trums über ein zentrales Dashboard.

Die modulare Ar­chi­tek­tur bietet dir alles, was du brauchst:

  • Zun: Der Service für Container. Er erlaubt dir das Ma­nage­ment von Apps, ohne dass du dich um die Server-Details kümmern musst.
  • Neutron & kuryr: Neutron regelt das Netzwerk, während kuryr als Brücke zu Docker dient.
  • Keystone: Dein Si­cher­heits­sys­tem für Iden­ti­tä­ten und Zu­griffs­rech­te.

Mehr dazu liest du in unserem Artikel über OpenStack.

D2iQ DC/OS

DC/OS steht für „Dis­tri­bu­ted Cloud Operating System“ und basiert auf Apache Mesos. Es fungiert quasi als Be­triebs­sys­tem für dein ganzes Re­chen­zen­trum. Es bündelt alle Res­sour­cen zu einem großen, logischen System, das du so einfach wie einen einzelnen PC steuerst.

Die Software au­to­ma­ti­siert das Res­sour­cen­ma­nage­ment und das Sche­du­ling. Die Ver­wal­tung erfolgt über CLI oder Web-Interface. Zu den Kern­stü­cken gehören:

  • Mesos-Master & Agents: Der Master plant die Aufgaben, die Agents führen sie in Con­tai­nern aus und melden freie Ka­pa­zi­tä­ten zurück.
  • Marathon: Das „init-System“ für deine Apps. Es startet, überwacht und skaliert deine Dienste im Cluster.

Mit dem „Universe“ gibt es zudem einen App-Katalog, aus dem du Tools wie Spark, Cassandra oder Jenkins mit einem Klick in­stal­lierst.

Si­cher­heit in der Docker-Welt

Docker nutzt clevere Iso­la­ti­ons­tech­ni­ken wie Name­spaces, um Prozesse von­ein­an­der zu trennen. Dennoch teilen sich Container denselben Kernel, weshalb sie nicht ganz so streng isoliert sind wie klas­si­sche VMs. world4you empfiehlt daher zu­sätz­li­che Si­cher­heits­an­ker wie AppArmor oder SELinux.

  • AppArmor: Regelt, auf welche Dateien ein Container zugreifen darf.
  • SELinux: Ein Regelwerk für den Zugriff auf Kernel-Res­sour­cen.
  • Seccomp: Überwacht und be­schränkt Sys­tem­auf­ru­fe.

Ein weiteres Thema ist die Herkunft von Images. Da jeder im Docker-Hub Inhalte hochladen kann, solltest du nur ver­trau­ens­wür­di­gen Quellen vertrauen. Achte auf zer­ti­fi­zier­te Images: Docker bietet ein Programm an, bei dem Software auf Herz und Nieren geprüft wird. Das gibt dir die nötige Si­cher­heit für deine Pro­duk­tiv­sys­te­me.

Zum Hauptmenü