27.10.21

TechTalk „Einsatz von Docker in der Softwareentwicklung“

Docker ist eine Open-Source Containerisierungstechnologie, die in Rekordzeit die gesamte IT-Industrie erobert hat. Das ist nicht zuletzt den zahlreichen Vorteilen zu verdanken, denn mit Docker lässt sich Software unkompliziert verteilen und systemunabhängig in stets gleichen Umgebungen betreiben.

Dies wird durch das Konzept von sogenannten Docker Images und Docker Containern ermöglicht: Ein Docker Image ist ein ausführbares Softwarepaket, das sämtliche Abhängigkeiten einkapselt, die von einer Softwareanwendung benötigt werden, um ordnungsgemäß zu funktionieren. Beim Ausführen des Images wird dann ein Container erzeugt, in dem die eigentliche Anwendung läuft. Dieser wird technisch abgeschottet vom Rest des Systems betrieben und kann quasi als eigenes System mit eigenem Dateisystem gesehen werden, dessen Struktur vom verwendeten Docker Image bestimmt wird – die Umgebung des Containers ist somit auf den Inhalt des Images beschränkt.

Die unkomplizierte Verteilung von Docker Images wird durch sogenannte Docker Image Registries realisiert. Das sind Server, die das Hoch- oder Herunterladen von Images ermöglichen. Sie können öffentlich oder aber auch privat sein – es besteht demnach keine Verpflichtung, seine eigenen Images für jeden zugänglich zu machen.

Im Prinzip hat man die Möglichkeit, entweder von bereits existierenden Images Gebrauch zu machen oder selbst eines zu erstellen. Ersteres wird besonders durch den sogenannten DockerHub leichtgemacht – dieser stellt die offizielle, öffentliche Image Registry von Docker dar. Aufgrund der großen Community von Docker wurde hier bereits eine riesige Anzahl an Images zu den verschiedensten Anwendungen hochgeladen. Egal ob man eine Datenbank, einen Web- oder sogar Mailserver benötigt – ein passendes Image ist hier in der Regel schnell gefunden.

Da man mit Docker die erzeugten Container in virtuelle, voneinander strikt getrennte Netzwerke unterteilen kann, lassen sich außerdem mehrere Multi-Container Systeme gleichzeitig betreiben. So kann man beispielsweise zwei Netzwerke anlegen und im ersten eine Webanwendung zusammen mit einer MongoDB Datenbank betreiben, während im zweiten drei Webanwendungen laufen, die auf eine gemeinsame PostgreSQL Datenbank zugreifen.

Ebenfalls sehr vorteilhaft ist die Versionierung von Docker Images, welche es ermöglicht, für jede Version der jeweiligen Software ein eigenes Docker Image zu erstellen. Organisiert man diese in einer Registry, so kann man sich stets eine beliebige Version herunterladen und bei Bedarf bestehende Deployments unkompliziert in ihrer Version austauschen.

 

Die Softwareentwicklung profitiert von der Containerisierung durch Docker besonders stark, denn damit sind Entwicklungsumgebungen auf beliebigen Systemen ganz einfach reproduzierbar. Diese sind zudem in kurzer Zeit auf- und wieder abgebaut, denn die von Docker erzeugten Container sind deutlich leichtgewichtiger und schneller als Virtualisierungslösungen.

 

Es profitiert jedoch nicht nur der Entwicklungsprozess – auch der Vertrieb von Software wird durch Docker unterstützt. Da Container-Orchestrierungslösungen wie beispielsweise Kubernetes mit Docker Images genutzt werden können, lässt sich die Software so auch in die Cloud migrieren, was heutzutage immer mehr an Bedeutung gewinnt.

Abschließend sollte erwähnt werden, dass die hohe Automatisierbarkeit von Docker anhand eines selbst entwickelten Skripts vorgestellt wurde. Damit können automatisch unsere IPM-Kraftfahrt Webanwendungen in Docker Containern gestartet werden.

 

Autor: Manuel Neumayer

XS
SM
MD
LG
Share
Sprachauswahl Icon
We noticed your browser language is not German.
Do you want to switch to English?