Was ist Docker? Welche Vorteile bringt es?

Docker ist ein Softwareprodukt für den Serverbereich, das erstmals 2011 veröffentlicht wurde. Die Idee von Docker ist es, Softwareanwendungen in sogenannten Containern auszuführen. Dahinter steckt das Konzept der Microservices-Architektur, bei der eine Anwendung aus vielen einzelnen Microservices zusammengesetzt wird. Für Docker heißt das, dass beliebig viele Container in einer Dockerumgebung laufen und über geschützte Kanäle miteinander kommunizieren können. 

So kann z. B. das CMS Drupal in einer Dockerumgebung ausgeführt werden. Hierbei laufen Datenbank, Webserver und Drupal in jeweils eigenen Containern. Mit sogenannten Volumes kann man Daten, z. B. einer Drupal-Datenbank, CMS-Daten oder andere, vom Container getrennt halten. D. h. Applikation und Daten können getrennt verwalten werden. Z. B. ist dadurch ein Update des Webservers nginx ganz einfach. Der alte Container wird einfach mit einer neueren Version des nginx-Docker-Images neu aufgebaut.

Container werden nämlich auf Basis von sogenannten Images mit Hilfe von Dockerfiles (oder Docker-Compose Dateien) generiert. Die sind sozusagen die Rezepte, auf deren Basis Container konfiguriert und gebaut werden. Vorgefertigte Images von verschiedensten Applikationen gibt es in großer Zahl. Die größte Sammlung an Docker-Images finden man auf hub.docker.com. Die Auswahl an Images ist wirklich sehr groß und viele Softwareanbieter stellen offizielle Images für ihre Produkte bereit.

Docker Moby Logo

Was brauch ich um Docker im Web-/CMS-Bereich nutzen zu können?

Für eine Anwendung, die nginx, mySQL und Drupal nutzt, evtl. noch einen Reverse Proxy wie Traefik und Sicherheitsvorkehrungen via Docker oder direkt auf dem Host-System, z. B. fail2ban, firewall o.ä. kommt man um ausreichende Kenntnisse dieser Softwareanwendungen natürlich nicht herum. Meist läuft die Dockerumgebung des Servers auf einem Linux-Betriebssystem mit Zugang über ssh.  

Für den einfachen Privatanwender ist eine Docker-basierte Installation in der Regel wohl nicht empfehlenswert, da einfach zu viel Know-how benötigt wird. Im professionellen Umfeld ist Docker inzwischen allerdings sehr verbreitet und quasi standard. Eben vor allem auch, weil sich das Programmieren und Denken nach dem Prinzip der Microservices im mehr durchsetzt.

Die 5 größten Vorteile aus meiner Sicht:

1. Plattformunabhängig

Wo die Docker-Umgebung läuft, laufen auch meine Container.


2. Produktivität

Einfach Docker-Images “pullen”, für den eigenen Bedarf konfigurieren und man hat extrem schnell seine gewünschte Software-Umgebung.


3. Trennung von Applikation und Daten

Das vereinfacht die Handhabung enorm.


4. Einrichtung

Dockerfiles oder Docker-compose Dateien sind Rezepte die beim Ausführen flink die gewünschte Umgebung aufbauen.


5. Sicherheit

Eine App pro Container und damit abgekapselte Einzelanwendungen erhöhen die Sicherheit.