Docker ist eine moderne Form, Softwareanwendungen in virtuellen Containern auszuführen. Die Vorteile dieser Technik sind so zahlreich, dass Docker die IT-Welt im Sturm erobert hat (vgl. Vaughan-Nichols, 2018) und seit 2016 auch die TUHH.
Die Geschichte von Docker an der TUHH beginnt mit der Hamburg Open Online University (HOOU). Mittelfristiges Ziel des Großprojektes war es 2016, eine Lernplattform zu entwickeln, auf der die Lernarrangements der sechs staatlichen Hochschulen Hamburgs zum Mitmachen bereitgestellt werden sollten. Bis zur Fertigstellung der Plattform war jede Hochschule aufgefordert, die Ideen der Lehrenden “mit Bordmitteln” umzusetzen, mit vorhandenen Tools und aus der bisherigen Erfahrung mit E-Learning-Angeboten heraus. Die TUHH hat diesen Moment genutzt, um in ihrem wachsenden digitalen Experimentierfeld einige neue Technologien und Praktiken zu erproben und in den Kontext von Forschung und Lehre zu transferieren.
Die Motivation, Docker zu nutzen, entsprang zunächst einer praktischen Analyse der Software Sandstorm. Diese einzusetzen erschien aus zweierlei Gründen als technische Basis für die HOOU an der TUHH sinnvoll:
- Sandstorm ist freie Software und kann in Hochschulrechenzentren installiert werden.
- Sandstorm virtualisiert die verschiedenen Applikationen intern, erfordert also keinen dedizierten Rechner pro Anwendung.
- Sandstorm integriert eine Vielzahl von so genannten Web-2.0-Tools, die Anwender_innen unter einer einzigen Anmeldung zusammenziehen können.
Gerade aus dem dritten Grund schien Sandstorm bestens geeignet, die Grundlage für individuelle webgestützte Lernarrangements zu stellen. An der TUHH setzten wir Sandstorm in einer Entwicklungsumgebung auf und teilten unsere gewonnenen Erfahrungen mit den Kolleg_innen aus dem HOOU-Team. Begrüßt wurde die Übersicht der verschiedenen Typen von Anwendungen, die es als freie und quelloffene Software gab. Das Potenzial wurde auch darin gesehen, dass der App Market von Sandstorm und die einfache Inbetriebnahme der Applikationen vielen Lehrenden helfen würde, neue Anwendungen und Anwendungstypen kennenzulernen und auf neue und individuelle Ideen für ihre Lernarrangements zu kommen (vgl. Abb. 1).
Aus der Perspektive der Administration und Wartung allerdings erschien uns Sandstorm zu sehr als Blackbox, deren Innenleben wir nicht wirklich kontrollieren konnten. Auch war das technische Konzept der “Verpackung” von Anwendungen für Sandstorm, die Virtualisierung über Vagrant, zu umständlich, um die Entwicklungsgeschwindigkeit und Anpassbarkeit zu erreichen, die uns vorschwebte. Zudem war nicht klar, ob das Geschäftsmodell von Sandstorm langfristig tragen würde (vgl. Abschnitt “Chancen und Herausforderungen von Docker”). Sandstorm hatte uns inspiriert, aber nicht zufriedengestellt.
Schnelle Experimente, die nichts kosten: Auftritt Docker
Was wir an Sandstorm sehr mochten, war die Möglichkeit, Lehrenden beliebte Apps für jeden Zweck quasi per Knopfdruck zur Verfügung zu stellen bzw. wenig Aufwand treiben zu müssen, um ihnen ihre Wünsche zu erfüllen. Wir wollten auch den Aspekt bewahren, dass sich Einsteiger_innen in der webgestützten Lehre über mögliche Applikationen durch praktische Erfahrungen informieren können.
Uns war bekannt, dass Docker weltweit einen fulminanten Siegeszug angetreten hatte, weil es schlanke und schnelle Virtualisierungen ermöglichte. Bauanleitungen für Softwareanwendungen und Dienste lassen sich mit Docker in einer einzigen Datei, dem Dockerfile
, festhalten. Aus dem Dockerfile
wird dann ein Image erstellt, durch das beliebig viele Container gestartet werden können, in der die verpackte Anwendung läuft. In einer weiteren Datei docker-compose.yml
lässt sich definieren, wie notwendige Dienste einer Anwendung miteinander kombiniert und konfiguriert werden können (vgl. Öggl & Kofler, 2018 sowie die Docker-Homepage).
Allerdings ist es zunächst gar nicht notwendig, sich mit diesen tiefergehenden technischen Themen auseinanderzusetzen. Auf dem Docker Hub liegen zahlreiche Images zum freien Ausprobieren vor, von denen in der Regel mit einem Befehl wie
docker run --name tuhh-wordpress --link tuhh-mysql:mysql -d wordpress
ein Container gestartet werden kann.
Mit Docker wird die Zugangsbarriere zu komplexen Anwendungen, Diensten und Systemen noch weiter gesenkt, denn auf dem Docker Hub liegen zahlreiche Images zum freien Ausprobieren vor. Die Bequemlichkeit, mit einem Klick eine solche Anwendung zu starten, wird damit jedoch noch nicht erreicht. Dieses Ziel vor Augen, probierten wir weitere Einsatzmöglichkeiten von Docker in Forschung und Lehre aus.
Docker in der Entwicklung freier Bildungsmaterialien (OER)
Im Zentrum der HOOU steht der Diskurs um die Zugänglichkeit von Bildungsmaterialien, an dem sich die TUHH von Beginn an mit technischen Experimenten beteiligt hat (vgl. Dürkop, 2016). In dem Konzept von Markdown, statischen Websitegeneratoren und GitLab kam Docker anfangs noch gar nicht vor. Wir fanden aber schnell heraus, dass das integrative Konzept von GitLab die Einbindung von Docker Images in Pipelines zuließ. Damit konnten wir so ziemlich jedes digitale (Bildungs)artefakt online bauen! Wie diese Art, Bildungsmaterialien zu entwickeln, auch im Team stattfinden kann, wird in diesem Blog und in Dürkop & Ladwig (2018) beschrieben.
Docker in der Softwareentwicklung
Da Docker eigentlich aus der Softwareentwicklung kommt, fanden wir es angezeigt, hier auch zu probieren, was möglich ist. Das HOOU-Projekt Hop-on nahmen wir zum Anlass, um noch einen Schritt weiterzugehen. Als Softwarebasis verwendeten wir das Python Webframework Django und bauten eine ensprechende Pipeline in GitLab, an deren Ende stets eine lauffähige Webanwendung stand. Darüber hinausgehend experimentierten wir mit dem Feature Review Apps in GitLab. Damit ist es möglich, von jedem Entwicklungszweig (branch) im Projekt eine eigene Vorschau zu erzeugen. Das Potenzial dieser Funktion ist enorm: Beiträge, ob bei Texten oder Software, können in großen und kleinen Entwicklungsschritten begutachtet werden, bevor sie in den produktiven Zweig aufgenommen werden. Damit ergeben sich im Kontext des wissenschaftlichen Schreibens Möglichkeiten des Peer Reviews. In der Softwareentwicklung können Entwickler_innen und Endanwender_innen überprüfen, ob entwickelt wurde, was sie sich vorgestellt hatten, und direkt aus dem provisorischen Artefakt lernen. Review Apps verhalten sich zum Quellcode wie Musik zur Notenschrift: Ob eine Komposition gelungen ist, lässt sich besser durch das Hören der Noten überprüfen als durch deren Lektüre.
Docker in der Forschung
Docker spielt aber nicht nur in der Lehre seine Stärken aus, sondern kann auch in der Forschung Potenziale entfalten. So zeigt der Tweet in Abb. 2, wie sich Forschungsdaten und komplexe Anwendungen in einem Docker-Image bündeln lassen.
Mit der Eingabe von
docker run -p 7474:7474 ryguyrg/neo4j-panama-papers
werden die Daten des International Consortium of Investigative Journalists heruntergeladen und in einer neo4j-Graphdatenbank zum selbständigen Explorieren bereitgestellt (vgl. Abb. 3).
Docker kann also helfen, Daten, die eine hohe gesellschaftliche Relevanz haben, zusammen mit den Werkzeugen, die zu deren Verständnis notwendig sind, zugänglich und transparent zu machen. Im Sinne von Open Science, wie wir sie an der TUHH verstehen, können mit Docker Forschungsergebnisse samt Anwendung verteilt und so nachvollziehbar und reproduzierbar gemacht werden.
Chancen und Herausforderungen von Docker
Docker hat sich an der TUHH bewährt. Die Virtualisierungslösung erlaubt es, hoch automatisiert und kosteneffizient Anwendungen für Forschung und Lehre zu verpacken und sowohl experimentell als auch produktiv zu betreiben. Dabei sehen wir im Kern folgende Vorteile:
- Bauanleitungen für Docker (
Dockerfile
,docker-compose.yml
) sind versionierbar und im Sinne von “Rezepten” teil- und tauschbar, z.B. wenn sie in GitLab veröffentlicht werden. - Anwendungen, die im Lehr- und Forschungsbetrieb oft als dedizierte Instanz gebraucht werden, können mit allen notwendigen und sinnvollen Konfigurationen in einem Image verpackt werden. Ein prominentes Beispiel ist WordPress, das häufig für das Lernmanagement eingesetzt wird oder als Portfoliolösung dient (vgl. z.B. van den Berk & Tan, 2013).
- Durch Befehle wie
docker-compose up
können komplexe Anwendungen auch von weniger IT-affinen Menschen gestartet und verwendet werden. - Docker Container können flexibel in automatisierte Entwicklungsprozesse von OER und Software eingebunden werden.
- In der Forschung können Daten zusammen mit Anwendungen verpackt und verteilt werden, vgl. das Beispiel der Panama Papers.
- Viele Anwendungen, die in der webgestützten Lehre Sinn machen, liegen zum Experimentieren auf dem Docker Hub.
Eine Herausforderung stellt nach wie vor die konzeptionelle Komplexität von Docker dar. Wenn ein Container nicht gleich hochfährt, ist ein tieferes Verständnis der technischen Hintergründe nötig, um hier mögliche Fehler zu beheben. Im produktiven Betrieb von Docker, vor allem im Zusammenspiel mit GitLab, haben wir in der Anfangszeit viel über Speicher- und Resourcenbedarfe gelernt.
Ausblick
Unsere Begeisterung für Docker an der TUHH hält an, obwohl wir ein Ziel noch nicht erreicht haben: digitale Lernumgebungen per Klick bereitstellen zu können. Hier evaluiert das Rechenzentrum gerade verschiedene freie und quelloffene Produkte wie Rancher und Portainer, um herauszufinden, ob die Administration von technischen Lernumgebungen auf Dockerbasis auch in den Händen von Lehrenden liegen kann.
Das wir Sandstorm damals nicht weiter verfolgt haben, bereuen wir nicht. Ein aktueller Beitrag im Projektblog deutet darauf hin, dass das Geschäftsmodell des crowdgefundeten Produkts nicht nachhaltig ist. Aus diesem Grund sehen wir uns in dem Ansatz bestärkt, Dienste für die webgestützte Lehre und Forschung modular aus handhabbaren Einzelteilen zusammenzubauen. Die Flexibilität, die wir dadurch gewinnen, hat sich in vergangenen Projekten als Vorteil erwiesen.
Referenzen
van den Berk, I. & Tan, W.-H. (2013). Das wissenschaftlich-akademische E-Portfolio in der Studieneingangsphase (Medien in der Wissenschaft). In C. Bremer & D. Krömker (Hrsg.), E-Learning zwischen Vision und Alltag (Band 64, S. 219–229). Münster.
Dürkop, A. (2016, April 28). Entwicklung einer offenen technischen Infrastruktur für HOOU-Lernarrangements an der TUHH. Hamburg Open Online University. Projektblog. Zugriff am 16.6.2018. Verfügbar unter: https://doi.org/10.15480/882.1649
Dürkop, A. & Ladwig, T. (2018). Kollaborativ schreiben mit GitLab. In Markdown & Pandoc (2. Auflage, S. 196–205). Graz: ebooks.kofler.
Öggl, B. & Kofler, M. (2018). Docker: das Praxisbuch für Entwickler und DevOps-Teams (Rheinwerk Computing). Bonn: Rheinwerk Verlag.
Vaughan-Nichols, S. J. (2018, März 21). What is Docker and why is it so darn popular? ZDNet. Zugriff am 5.11.2018. Verfügbar unter: https://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/
Dieser Beitrag wurde verfasst von Axel Dürkop, Andreas Böttger und Tina Ladwig.