Docker ist eine Open-Source containerisierungs Engine welche das Packen und Deployen von Software-Applikationen durch leichtgewichtige, portable und autarke Container automatisiert. Dabei beinhaltet ein Container alles was notwendig ist, um die Software unabhängig nahezu überall ausführen zu können.
Docker Container bringen Standardisierung in die Entwicklungsumgebung. Das laufende Docker-Image wird als Docker-Container bezeichnet. Ein laufender Container ist vollständig vom Host und von allen anderen laufenden Prozessen isolierter Prozess, der auf einem Computer mit Docker ausgeführt wird. Dabei hat der Prozess nur auf die zugewiesenen Hardware-Ressource zugriff. Diese Container können verschieden eingesetzt werden. Wir setzen diese für unsere lokale Entwicklungsumgebung aber auch für die Produktiven Systeme. Produktiv laufen die Container bei uns in einem Docker-Swarm, welcher mit Portainer verwaltet wird.
Das Docker-Container-Image stellt den Behälter dar, in den die Anwendung und deren Umgebung gepackt wurde. Darin enthalten sind das Dateisystem welches der Anwendung zur Verfugung steht und weitere Daten. Da jedes Docker-Image auf anderen Images aufbaut, sind diese aus verschiedenen Schichten aufgebaut. Es können also verschiedene Images auf den gleichen Images aufbauen. Das bedeutet, das mehrere unterschiedliche Images dasselbe Eltern-Image als Grundlage nutzen können. Wir setzen auf ein Basis-Image und haben verschiedene Ausprägungen des Images um die Bedürfnisse der Kunden-Plattformen abzubilden.
Ein erstelltes Image kann auf dem selben Computer ausgeführt werden oder zu einer Registry hochgeladen werden. Die Registry ermöglicht es, das Image auf einen anderen Rechner herunter zu laden, um es dort auszuführen. cloudtec verwendet eine eigene Registry mit der wir die von uns intern eingesetzten Images zentral zugänglich machen.