Docker ist heutzutage schon fast Standard wenn es um Server Anwendungen geht. Auch ich bin von der Container-Technik grundauf begeistert. Wenn du dich damit noch nicht auskennst ist das jedoch keine Schande. Nachdem du diese kleine Reihe an Blog-Posts gelesen hast, bist auch du fit, was Docker angeht.

Was ist so toll an Docker?

Beginnen wir doch damit: Was ist überhaupt Docker?


Docker ist eine Freie Software zur Isolierung von Anwendungen mit Containervirtualisierung.

Docker (Software) – Wikipedia

Das bedeutet du kannst (Server-)Anwendungen super simpel installieren und konfigurieren ohne dass sie sich mit anderen Anwendungen in den Weg kommen. Du brauchst verschiedene Versionen von PHP für verschiedene Apps? Kein Problem! Die Anwendund läuft nur auf bestimmten Linux-Distros? Nicht mit Docker!

Im Grunde laufen die Anwendungen einfach so, wie der Entwickler es gewollt hat, ohne dass du großartig Arbeit in das Installieren und stecken musst. Dieser nervige Schritt entfällt also. Und oben drauf gibt es noch nützliche Funktionen von Port-Forwarding bis zu Load-Balancing mittels Docker Swarm.

Doch Docker ist keine Virtuelle Maschine

Zumindest nicht so ganz. Die Anwendungen werden zwar isoliert auf ihre eigenen Dateisysteme, ihre eigenen Systembibliotheken etc. doch die Prozesse laufen alle direkt auf dem Hauptsystem. Damit besitzen sie fast die gleiche Performane wie wenn ich sie direkt installieren würde.

Prozesse aus Containern und der Docker Deamon laufen alle zusammen auf dem Host System

Hinweis: Was man hier auch sieht ist, dass viele Anwendungen als root laufen. Was genau das bedeutet, welche Auswirkungen das hat und wie man dagenen vorgehen kann wird in einem anderen Blogpost erklärt.

Begriffe

Um alles richtig zu verstehen ist es wichtig ein paar Begriffe zu kennen. Hier hat Wikipedia eine super Übersicht aus der ich mal zitiere:

Image
Ein Speicherabbild eines Containers. Das Image selbst besteht aus mehreren Layern, welche schreibgeschützt sind und somit nicht verändert werden können. Ein Image ist portabel, kann in Repositories gespeichert und mit anderen Nutzern geteilt werden. Aus einem Image können immer mehrere Container gestartet werden.
Container
Als Container wird die aktive Instanz eines Images bezeichnet. Der Container wird also gerade ausgeführt und ist beschäftigt. Sobald der Container kein Programm ausführt oder mit seinem Auftrag fertig ist, wird der Container automatisch beendet.
Layer
Ein Layer ist Teil eines Images und enthält einen Befehl oder eine Datei, welche dem Image hinzugefügt wurde. Anhand der Layer kann die ganze Historie des Images nachvollzogen werden.
Dockerfile
Eine Textdatei, welche mit verschiedenen Befehlen ein Image beschreibt. Diese werden bei der Ausführung abgearbeitet und für jeden Befehl ein einzelner Layer angelegt.
Repository
Ein Repository ist ein Satz gleichnamiger Images mit verschiedenen Tags, zumeist Versionen.
Registry
Eine Registry, wie zum Beispiel Docker Hub oder Artifactory, dient der Verwaltung von Repositories.

Docker (Software) – Wikipedia

Im nächsten Part wird gezeigt wie man Container mit Docker erstellt. Bleibt dran!