Entwicklung mit Docker

Entwicklung mit Docker

Docker ist eine Technologie die seit geraumer Zeit in aller Munde ist  - doch was ist Docker und wie kann auch Ihr Unternehmen davon profitieren?

Docker - Entwicklung containerisierter Anwendungen

Docker ist eine Softwarelösung für die Virtualisierung. Stark vereinfacht gesagt bedeutet dass das auf einem physischen Server im Data Center mittels virtueller Maschinen (Server) viele virtuelle Server betrieben werden.

Vorteile von Docker

Zu den großen Benefits von Docker gehört dass von einem vorbereiteten Image, also quasi der Vorlage für ein Service oder eine virtuellen Server, schnell und einfach eine beliebige Anzahl von Klonen (sogenannte Container) hochgefahren werden können.

Ein Beispiel

Auf einem dezidierten Server der in einem Data Center steht ist Docker installiert. Mittels dem Kommando docker pull ubuntu wird die neueste Version des Image von Ubuntu Linux gezogen.

Führt man jetzt das Kommando docker run --name mein-ubuntu ubuntu aus, steht in unter einer Minute ein jungfräulicher Ubuntu-Server zur Verfügung, der lokal per SSH erreichbar und konfigurierbar ist. Dieser wurde als Container (quasi als Klon) der Blaupause (des Image) erzeugt. Dieser Container kann nun wie ein regulärer Server betrieben werden und durch entsprechendes Setup auch mittels Persistenz seine Daten behalten selbst wenn er gestoppt und neu erzeugt wird.

Mit dem Docker Hub stehen unzählige Server-Images bereit die ebenfalls mit docker pull gezogen und installiert werden können - so gibt es zum Beispiel in vielen verschiedenen Versionen:

  • mySQL in verschiedenen Versionen
  • Apache2 + PHP
  • node.js
  • Redis
  • postgreSQL
  • Debian
  • Ubuntu
  • Alpine Linux
  • uvm.

Abgestimmt und abgeschottet - virtuelle Docker Netzwerke

Bei Docker sind die virtuellen Maschinen grundsätzlich vom Hostsystem - also Ihrem physischen Server - getrennt. Das bedeutet dass selbst im Fall einer Kompromittierung schnell Maßnahmen getroffen werden können ohne die gesamte physische Infrastruktur vom Netz zu nehmen.

Beispielsweise könnte ein Container mit einem WordPress Content Management aufgrund eines schwachen Passworts gehackt worden sein - im Fall eines Shared Hostings wäre es potentiell möglich dass auch andere auf dem gleichen System gehostete Websites infiziert wurden. Bei Docker ist dies nicht der Fall da der WordPress Container keinen Zugriff auf das Hostsystem besitzt - er könnte beispielsweise einfach gestoppt, entfernt und durch einen Klon aus dem Backup ersetzt werden - so wäre im besten Fall die Kompromittierung innerhalb von wenigen Minuten kein Problem mehr.

Docker als Raketentriebwerk für lokale Entwicklung

Gerade im Bereich Webentwicklung spielt Docker unglaubliche Stärken aus: so kann unser Team zum Beispiel eine Webanwendung lokal entwickeln und in einem vorbereiteten Server-Setup (in dem es dann später auch produktiv bei unserem Kunden gehostet wird) voll auf die Infrastruktur abgestimmt betreiben. Zwischenzeitlich lassen sich via docker commit Snapshots des Servers ziehen die dann einfach auf andere Systeme übertragen und dort wiederum mit Docker hochgefahren werden können.

Ganz nach Wunsch eigenen Docker Images erstellen

Nehmen wir an Sie möchten für Ihre Webanwendung ein Docker-Setup, haben jedoch für Ihren speziellen Anwendungsfall kein vorbereitetes Image gefunden? Kein Problem - einfach das gewünschte Setup in einem Dockerfile zusammenstellen (zum Beispiel könnte man für einen Webserver als Basis vom apache-2.4 Image ausgehen und dann im Dockerfile noch Abhängigkeiten, eine eigene Shell nach Maß sowie git, redis-commander oder zum Beispiel haproxy aufsetzen und konfigurieren) und Image erzeugen!

Ganze Ökosysteme mit docker-compose aufsetzen und betreiben

Ein weiteres Feature ist das Tool docker-compose. Mit ihm lassen sich aus mehreren Images und entsprechender Konfiguration ganze Container-Netzwerke bauen die dann mit einem einzigen Kommando gestartet und gestoppt werden können. So können kinderleicht Webserver, Datenbankserver, Cache und zum Beispiel Asset Storage über ein Setup vorbereitet und dann hochgefahren werden. Bonus: alle Container sind untereinander im selben virtuellen Netzwerk ansprechbar - so muss beispielsweise ein Datenbankserver keine offenen Ports (und damit potentielle Schwachstellen) nach Außen haben!

Sie möchten mehr dazu erfahren?

Dann freuen wir uns über Ihre Nachricht über die Kommentarfunktion oder gleich direkt via E-Mail - wir beantworten gerne Ihre Fragen!

Kommentare anzeigen
Erfahrungen & Bewertungen zu inQrt Digital Solutions