General
Tile
Die Container-Technologie - allen voran Docker - ist aus modernen Infrastrukturen nicht mehr wegzudenken. Denn die Kapselung von Services (z.B. MySQL, Nginx, Redis, Varnish, PHP, Cron) in sogenannte Service-Container bietet eine grosse Flexibilität für Portierung, Versionierung, Aktualisierung und für den stabilen Betrieb von Applikationen.
Paragraphs
Schneller reagieren dank Container Technologie
Die Container-Technologie - allen voran Docker - ist aus modernen Infrastrukturen nicht mehr wegzudenken. Denn die Kapselung von Services (z.B. MySQL, Nginx, Redis, Varnish, PHP, Cron) in sogenannte Service-Container bietet eine grosse Flexibilität für Portierung, Versionierung, Aktualisierung und für den stabilen Betrieb von Applikationen. Dies ermöglicht kürzere Software-Lieferzyklen, wodurch schneller auf veränderte Business-Anforderungen reagiert werden kann.
![](https://static.cando-image.com/cdn/ff/AP9ZfVJ0pzj0Qwio-aXYP2rRmSrglPWr2p5j1kj799A/1595341432/public/styles/thumbnail/public/2020-07/illustration-docker.jpg?itok=ZjBrRmQV)
Portierung
Durch die Unabhängigkeit der Service-Container zum darunterliegenden System, können Applikationen einfacher auf verschiedene Umgebungen (Entwicklung, Test, Staging usw.) portiert und dort 'wiederverwendet' werden. Auch eine Portierung der Applikation in die Cloud ist damit schneller realisiert.
Redundanter Betrieb - Updates und Versionierung
Werden Docker-Container auf einer Kubernetes Infrastruktur betrieben, können Aktualisierungen von Services auch während der Laufzeit erfolgen. Das heisst ein Update eines Service-Containers kann vorbereitet werden und es kann zur gegebenen Zeit unterbruchsfrei vom alten auf den neuen Container gewechselt werden. Insbesondere für moderne Continuous-Integration Prozesse ist diese Flexibilität unumgänglich.
Docker in der Entwicklungs-Umgebung
Das Vererbungs-Konzept der Docker-Images erlaubt es für Entwicklungs-Umgebungen, die gleichen Basis-Images zu verwenden, welche auch auf anderen Umgebungen verwenden werden. Aufbauend auf einem Image welches für die Produktion verwendet wird kann z.B. ein Image für die Entwicklung spezifische Services und Konfigurationen für z.B. Logging und Debugging beinhalten. Mit diesen Möglichkeiten können absolut vergleichbare Umgebungen nachgebildet werden, was wiederum für Testing und Qualitätssicherung von grosser Bedeutung ist. Ein weitere Vorteil ist das Onboarding von neuen Entwicklern. Mit einem Docker-Stack kann eine exakt identische Entwicklungs-Umgebung für mehrere Entwickler in einem Team zur Verfügung gestellt werden.
Updates/Security
Im Unterschied zu virtuellen Maschinen mit einem Betriebssystem haben Docker-Container kein eigenes Betriebssystem, sondern es wird das Betriebssystem des Hosts genutzt. Dies macht die Service-Container viel schlanker und vereinfacht die Wartung. Eine Herausforderung, welche nach wie vor besteht, ist die Wartung der Services in den Containern. Um den Überblick über die jeweiligen Versionen und anfallenden Patches zu behalten gibt es mittlerweile Tools wie Clair, welche die Docker-Images nach Schwachstellen "durchleuchten" und regelmässig Reports über ausstehende Patches zur Verfügung stellen.