17 Juni 2014

Kurzvortrag Docker

Bei credativ gibt es jeden Freitag einen Kurzvortrag, bei dem Kollegen die Gelegenheit haben, interessante Themen oder spannende Neuigkeiten aus der IT-Welt vorzutragen. Diese Woche gab einer unserer Kollegen einen kurzen Einblick in Docker.

Die freitäglichen Kurzvorträge, genannt Bill-Talks, entstanden aus der Idee, dass wir im Rahmen unserer alltäglichen Arbeit immer wieder neue, interessante Open-Source-Projekte kennenlernen. Da nicht immer jeder Kollege in jedem Team vertreten ist, dienen die Kurzvorträge dem Wissenstransfer, um Kollegen anderer Teams, aber auch aus Vertrieb und Marketing über spannende oder hilfreiche Werkzeuge zu informieren. Da die credativ auch ein Ausbildungsbetrieb ist, nehmen auch unsere Auszubildenden an diesen Kurzvorträgen teil und bringen eigene Vorträge ein.

Letzten Freitag stellte ein Kollege Docker vor, ein Werkzeug zum automatisierten Deployment von Anwendungen in Software-Containern unter Linux. Container sind in dem Zusammenhang vergleichbar mit virtuellen Maschinen, brauchen aber um ein vielfaches weniger Ressourcen und sind voll und ganz auf die enthaltene Anwendung zugeschnitten. Technisch bedeutet dies, dass vereinfachte Linux-Images (ohne Init-System, etc.) auf einem Host laufen, und dabei statt einem eigenen Kernel den des Host-Systems nutzen. Die Abgrenzung untereinander, damit ein Container nicht auf einen anderen schreiben kann, wird mit Hilfe von Namespaces und CGroups sichergestellt. Die Daten selbst werden üblicherweise in einem AUFS gespeichert, so dass bei ähnlichen Containern nur die Unterschiede zwischen diesen wirklich Platz verbrauchen.

Docker ist dabei das Frontend, dass all diese unterschiedlichen Komponenten auf einfach zu benutzende Art- und Weise zur Verfügung stellt. Mit Hilfe von Docker lassen sich schnell und benutzerfreundlich Container erzeugen und verwalten, sowie voneinander abschotten und untereinander verknüpfen lassen. Die Besonderheit des unter der Apache-Lizenz stehenden Dockers liegt neben der Benutzerfreundlichkeit in der Art der Verwaltung: wird ein vorgefertigtes Image gestartet, wird es ein Container – Anwendungen laufen also immer in Containern, Images sind sozusagen die Gussform für die Container. In einem Container können Änderungen durchgeführt werden – und er kann als neues Image gespeichert und bei Bedarf exportiert werden. Es ist auf diesem Weg möglich, mehrere Container von einem Image zu starten und unterschiedlich zu verändern oder zu nutzen. Dabei werden immer nur die Unterschiede zwischen den Images gespeichert. Die Images können wiederum hochgeladen und damit anderen zur Verfügung gestellt werden. Insgesamt erinnert die Bedienung von Docker an nicht wenig Stellen an die Nutzung von Git.

Der Vorteil einer Bereitstellung von Applikationen in einem Container liegt in der extrem schnellen Bereitstellung neuer Umgebungen (auch unter einer Sekunde) sowie der effizienten Speicherung der Daten. Auch erlaubt das Image/Container-Prinzip, z.B. aus einem Image heraus dutzende oder auch tausende Container zu starten, falls diese wegen einer Lastsituation gerade gebraucht werden. Gegenüber einer Virtualisierungs-Lösung fällt der Overhead weg, der für eine vollständige neue virtuelle Maschine benötigt wird (Init-System, Kernel. etc.), sowie der Zeitverlust beim Starten von VMs. Bei großen Mengen von Containern ist dies durchaus relevant. EIn weiterer Vorteil ist, dass Docker als Containerformat derzeit das einzige nennenswert weit verbreitete Format ist, und damit der Austausch leicht ist, während es bei virtuellen Maschinen eine Vielzahl von teilweise inkompatiblen Formaten gibt.

Dafür aber hat Docker insbesondere Schwächen bei komplexeren Netzwerk-Anforderungen wie OpenVPN oder Corosync. Auch ist Docker vor allen Dingen auf den Betrieb von einzelnen Anwendungen hin konzipiert, was ein gewisses Umdenken im Vergleich zu VMs erfordert. So bieten übliche Docker-Container z.B. erst mal kein Syslog oder sonstige systemspezifische Dienste.

Für die Zukunft sind wir gespannt darauf, wie weit Docker Verbreitung finden und wo es sich einen Platz im Linux-Ökosystem suchen wird. Gerade die Möglichkeit, in Sekunden und ohne großen Bedarf an Ressourcen eine große Zahl von Diensten zur Verfügung zu stellen, macht Docker zu einer echten Alternative zu virtuellen Maschinen.

 

Dieser Artikel wurde ursprünglich geschrieben von Roland Wolters.

Kategorien: credativ® Inside
Tags: CentOS Debian Docker Red Hat

SH

über den Autor

Sascha Heuer


Beitrag teilen: