Docker ist eine Software-Technologie, mit der man das Entwickeln und Deployen von Applikationen anders macht, als in der Vergangenheit. Das Besondere bei Docker ist, dass die jeweilige Applikation für sich genommen in einem Docker-Container gekapselt ist. Dieser Docker-Container ist ein jeweils auf das Wesentliche abgespecktes Betriebssystem, das nur die jeweilige Applikation beinhaltet.
Während man zurücklegend vor allem an bestimmte Hardware-Server gebunden war, erlaubt es Docker, eine Applikation zwischen verschiedenen Systemen hin- und herzuschieben. Damit wird das Deployment von einem System stark vereinfacht.
Vorgehensweise ohne Docker
Bevor es Docker gab, war die Vorgehensweise in der Regel wie die Nutzung von Software auf Desktop-Computern. Man installiert ohne Docker eine bestimmte Version einer Software auf (s)einem Server, wie eine Datenbanksystem. Damit ist man immer fest an die Restriktionen und Eigenheiten dieser Software gebunden. Hat man beispielsweise mehrere Datenbanken (unterschiedlicher Versionsstände) zu administrieren, kann es ohne Docker schnell zu Konflikten und Komplikationen kommen. Hier hilft Docker.
Vorgehensweise mit Docker
Bei Docker wird die Datenbank-Software (wie beispielsweise MySQL) gekapselt: Jede Software startet in einem konfigurierbaren Docker-Container, die ihr eigenes abgespecktes Betriebssystem mitbringt. Damit ist ein Container schnell gestartet, klein und isoliert: Es können rein technisch keine Versionskonflikte auftreten, denn die Software ist die einzigie, die in ihrer Welt (dem Docker Container) läuft. Benötigt man verschiedene Versionen einer Datenbank-Software, lässt man einfach verschiedene Docker-Container laufen… einzel oder parallel.
In der Regel basiert eine Applikation nicht nur aus einer Software sondern aus mehreren Bestandteilen (Webserver, Middleware, Datenbank, und so weiter). In einem Docker-System erhält jeder dieser Bestandteile seinen eigenen Container. Mit Docker hat man aber nicht nur das bereits genannte Isolationsproblem gelöst. Sondern man kann ein defektes Livesystem zum Debuggen schnell auf ein Testsystem übertragen, auseinanderschrauben und untersuchen. Oder man kann seine Applikation beispielsweise mittels AWS skalieren.
Im Dezember 2019 habe ich eine Reihe von Docker-Fortbildungen abgelegt und nutze Docker bereits privat. Jetzt plane ich, Docker auch beruflich intensiver zu nutzen.