Not logged in.

Contribution Details

Type Bachelor's Thesis
Scope Discipline-based scholarship
Title An Empirical Analysis of the Docker Container Ecosystem on GitHub
Organization Unit
Authors
  • Sali Zumberi
Supervisors
  • Harald Gall
  • Jürgen Cito
  • Gerald Schermann
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2017
Abstract Text Docker is a leading software container platform which has become increasingly popular in recent years. It allows to package an application with its dependencies into a standardized, self-contained unit called a container. Containers thus simplify the provision of applications because they contain all the necessary packages and are easy to transport and install. They can be used in software development to automate repetitive tasks, such as deploying and configuring development environments, or simply launching software on any system. Docker provides his own declarative scripting language (written in Dockerfiles) to create images for such containers. It consists of declarative definitions and refers to the practice of scripting the provisioning of hardware and operating system requirements concurrently with the development of the software itself. With a Dockerfile, a container image can be created repetitively without manual installation or configuration steps. Therefore, they can often be found in respective source code repositories. This Bachelor thesis presents an exploratory empirical study with the goal to characterize the Docker ecosystem, analyze the evolution of Dockerfiles, and lastly identify prevalent quality issues. It is based on a data set of 97í571 Dockerfiles, which are divided into three different categories to contrast them: the entire data set, the top 100 and the top 1000 most popular Docker-using projects. Most of the quality issues (28.6\%) arise from missing version pinning (i.e., specifying a concrete version for dependencies). The most popular projects change more often than the rest of the Docker population, with 4.95 revisions per year and 5 lines of code changed on average. Most changes deal with dependencies which are currently stored in a rather unstructured manner. Furthermore, a rising trend of using lightweight images, for instance Alpine, has been observed.
Zusammenfassung Docker ist eine führende Software-Container-Plattform, die in den letzten Jahren stark an Popularität gewonnen hat. Sie erlaubt, eine Anwendung mit ihren Abhängigkeiten in eine standardisierte, in sich geschlossene Einheit zu verpacken, die als Container bezeichnet wird. Container vereinfachen somit die Bereitstellung von Applikationen, da sie alle notwendigen Pakete enthalten und einfach zu transportieren und zu installieren sind. Sie können in der Softwareentwicklung eingesetzt werden, um repetitive Aufgaben zu automatisieren, wie z. B. das Implementieren und Konfigurieren von Entwicklungsumgebungen oder simpel das Starten von Software auf jedem System. Docker stellt seine eigene Skriptsprache (geschrieben in Dockerfiles) zur Verfügung, um Images für solche Container zu erstellen. Es besteht aus deklarativen Definitionen und bezieht sich auf das Scripting der Bereitstellung von Hardware- und Betriebssystemanforderungen parallel zur Softwareentwicklung selbst. Mit einem Dockerfile kann ein Containerimage ohne manuelle Installations- oder Konfigurationsschritte wiederholt erstellt werden. Daher können sie oft in entsprechenden Quellcode-Repositories gefunden werden. Diese Bachelor-Arbeit präsentiert eine explorative empirische Studie mit dem Ziel, das Docker-÷kosystem zu charakterisieren, die Evolution von Dockerfiles zu analysieren und letztlich vorherrschende Qualitätsprobleme zu identifizieren. Es basiert auf einem Datensatz von 97'571 Dockerfiles, welcher in drei verschiedene Kategorien unterteilt wird, um diese gegenüberzustellen: den gesamten Datensatz, die Top 100 sowie die Top 1000 der meist verbreiteten Docker-basierten Projekte. Die meisten Qualitätsprobleme (28,6\%) ergeben sich aus fehlender Versionsvereinigung (d.h. Angabe einer konkreten Version für Abhängigkeiten). Die populärsten Projekte ändern sich üfter als der Rest der Docker-Bevölkerung, mit 4,95 Revisionen pro Jahr und 5 Zeilen Code, die im Durchschnitt geändert werden. Die meisten Änderungen befassen sich mit Abhängigkeiten, die derzeit eher unstrukturiert gespeichert sind. Darüber hinaus wurde ein steigender Trend der Verwendung von leichten Images, wie zum Beispiel Alpine, beobachtet.
PDF File Download
Export BibTeX