Die Reise in einem Container – Die Basis von Docker

Die Reise in einem Container – Die Basis von Docker

Hey Leute,

vor neun Monaten stand ich vor der größten Herausforderungen meiner Berufskarriere. Mein Studium der Informatik war beendet und ich begann, bei einem der größten Mobilitäts- und Logistikunternehmen in der Abteilung IT-Operations zu arbeiten.

Dort wurde der Neubau einer IT Plattform begonnen und für IT Operations wurde entschieden, dass diese Plattform in einem Cloudzentrum betrieben werden soll. Schnell wurde ich mit dem Thema Docker konfrontiert und wie so oft hieß es nun etwas Neues zu lernen und mein Wissen anzuwenden. Von Docker hatte ich zwar schon einmal gehört, aber gearbeitet hatte ich damit noch nie. Klar, mit der Linux Konsole kenne ich mich aus, aber wie dann tatsächlich in einem Großunternehmen Software entwickelt wird, war neu für mich. Es war also notwendig, dass ich Docker von Grund auf erlerne. Dabei hätte ich mir gewünscht, dass es strukturierte Informationen zu diesem Thema gibt und mich jemand praktisch durch die Grundlagen führt. Genau deshalb habe ich heute, neun Monate später, dazu einen Kurs für euch erstellt und auf Udemy veröffentlich. Dieser Kurs nimmt dich an die Hand und führt dich Schritt für Schritt an Docker heran. Ich habe Wert darauf gelegt, konkrete Beispiele in den Kurs aufzunehmen, damit du Docker direkt in dein Umfeld transferieren kannst.

Doch was ist Docker und für wen ist das Thema interessant?

Bei der Entwicklung von Software stellt sich immer die Frage, wie die Anwendung dem Endkunden bereitgestellt wird. Denn als Kunde möchte jeder von uns 24/7 die Möglichkeit haben, den bereitgestellten Service zu nutzen. Stell dir mal vor, dass Google für eine Stunde am Tag nicht funktioniert oder du bei Amazon zwischen 18 und 19 Uhr nichts kaufen kannst. Damit so etwas nicht passiert, legen alle Unternehmen viel Wert auf eine stabile IT. Da spielen Themen wie Portabilität, Wartbarkeit, Ausfallsicherheit und Skalierbarkeit eine große Rolle.

Da diese Themen auf dem Notebook eines Entwicklers nicht zu realisieren sind, werden die Anwendungen auf Servern in Rechenzentren betrieben. Wenn eine Anwendung direkt auf einem Server installiert wird, dann kann diese bei einem Ausfall des Servers nicht einfach transferiert werden. Eine sogenannte Virtualisierung ermöglicht es, die Installation zu abstrahieren. Die Anwendung läuft auf einem virtuellen Server (VM), welcher über den sogenannten Hypervisor mit der eigentlichen Hardware kommuniziert. Diese VM kann somit auf jedem Server betrieben werden, welche einen Hypervisor hat.

Docker funktioniert ähnlich, ist jedoch nochmals leichtgewichtiger als eine VM. Ein Container simuliert nicht einen ganzen Server, sondern ist eine isolierte Gruppe von Prozessen. Der Bauplan eines Containers, das sogenannte Image, ist in Schichten strukturiert. Jede Schicht bildet ein Stück des Images ab und ist Read-only. Wenn nun der Container erweitert werden soll, muss eine neue Schicht erzeugt werden, welche dem Image hinzugefügt wird. Durch diese Art der Strukturierung ist es jederzeit nachvollziehbar, welche Funktionalität ein Image abbildet. Wird der Container aus diesem Image gestartet, dann wird eine Writable-Schicht erzeugt, auf welcher der Container arbeiten kann. Bei der Skalierung wird einfach eine neue Writable-Schicht erzeugt. Es wird somit nicht das komplette Image benötigt, bzw. kopiert, sondern nur eine zusätzliche Schicht. Im Vergleich würde bei einer VM immer die gesamte VM kopiert.

Wenn deine Neugier geweckt ist, du dich aktuell mit Docker beschäftigst und Unterstützung beim Einstieg benötigst, dann schau dir gerne unseren Udemy Kurs „Docker für Anfänger – Eine Reise im Container“ an. Dieser Kurs ist ein Hands-On für alle, welche die Theorie direkt in der Praxis sehen und testen wollen. Die Grundlagen kannst du dir kostenlos anschauen und wenn du praktisch durchstarten willst, dann hol dir den kompletten Kurs mit dem Rabattcode BLOGLESER für 9,99€.

Euer Kevin

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.