IT-Knowledgebase
de DevOps Software Docker Serie

Docker #1 - Was ist Docker?

In dieser Serie schauen wir uns das Tool docker an und was man damit machen kann. Zuerst klären wir natürlich einmal was docker genau ist.

Docker ist eine Virtualisierungssoftware zum Entwickeln von Anwendungen oder zum Bereitstellen von Anwendungen. Dabei ist es mit docker in der Regel einfacher Software zur Verfügung zu stellen oder zu entwickeln, da in einer virtualisierung mit docker sämtliche Abhängigkeiten und Konfigurationen bereits mitgeliefert werden. Man braucht also nur kleine Anpassungen oder sogar gar keine Anpassungen an seiner Software zu machen um Sie zum laufen zu bekommen.

Welche Probleme löst docker damit?

Wir schauen uns einmal an wie man vorher Software zur Verfügung gestellt hat um damit die Probleme besser zu veranschaulichen.

Vorher musste man für seine Anwendung jede benötigte Software (Datenbanken, Messaging Systeme, Caching Systeme) lokal bei jedem Entwickler und produktiven System installieren und entsprechend gleich konfigurieren. Dabei muss um Probleme zu entgehen jede Version und Einstellung natürlich exakt gleich sein. Das stellt eine große Herausforderung vorallem bei mehreren Entwicklern dar. Bei Updates oder Konfigurationsänderungen während eines Updates musste es auch ebenfalls bei einem oder mehreren Entwicklern hochgezogen werden um das Update zu entwickeln um es anschließend bei jedem Server und jedem anderen Entwickler zu tun.

Je nachdem wie groß und kompliziert die Anwendung wurde war die Herausforderung das ganze zu kontrollieren und wartbar zu machen eine unmenge an Arbeit.

Bei einem Update wurden also Handbücher für die betroffenen Personen geschrieben, was wie auf einem Server gemacht werden musste, damit das Update richtig durchgeführt werden kann.

Wie funktioniert es mit docker bzw. Containern?

Mit Containern wird nichts mehr lokal installiert, da der Container alles samt seiner Konfiguration mit sich bringt. Es können mehrere Versionen einer Software gestartet werden, so dass man z.B. eine Datenbank in der der Version 9 und 10 laufen hat um das Update zu entwickeln. Zusätzlich kann man Container einfach mit einem Befehl starten, so dass es kaum bis gar keine Arbeit mehr darstellt die Umgebungen für die Entwickler zu managen. Bei einem Update auf einem Server wird der alte Container gestoppt und der neue einfach hochgefahren.

Was ist denn überhaupt ein Container?

Um zu wissen was ein Container ist, betrachten wir erstmal ein Image. Ein Image beschreibt unsere Software anhand von Schritten. Innerhalb eines Images wird also von einer Basis ausgehend (z.B. Ubuntu oder Alpine) weitere Schritte ausgeführt um zu einer ferttig konfigurierten Software zu kommen. Die Schritte können z.B. sein: Dateien in das Image zu kopieren oder bestimmte Befehle auszuführen. So wird z.B. für ein NGINX-Image ein Ubuntu genommen und dort mittels apt get install nginx die Anwendung hinein installiert.

Ein Container ist nun eine laufende Instanz von so einem Image. Ein Image ist also die Bauanleitung für einen Container und der Container ist das was bei uns auf dem Server oder dem Computer am ende läuft und auf dem wir operieren.