Docker bietet eine zentrale Plattform an, auf der Container zur Nachnutzung abgelegt weden können (vergleichbar mit einem App-Store). Wir nutzen das folgende Repository auf Docker Hub:
* Da der Container noch nicht lokal vorliegt, wird er automatisch von Docker Hub heruntergeladen (in Teilbestandteilen)
* ```felixlohmeier/openrefine:2.6rc2``` ist die Kennzeichnung des Images im Docker Hub
* ```--rm``` löscht den Container nach dem Beenden wieder, damit die Festplatte nicht zumüllt
* ```-p 8888:3333``` richtet ein sogenanntes Port Forwarding im Netzwerk ein. Port 8888 außen wird auf Port 3333 innen gemappt. Somit ist der Docker-Container über http://<ip-adresse>:8888 von außen erreichbar
* ```-v /home/stud/refine:/data``` definiert das oben erstellte Arbeitsverzeichnis und verbindet es mit dem internen Arbeitsverzeichnis /data im Container
* ```-i 0.0.0.0``` öffnet den Docker-Container für den Zugriff aus dem Netzwerk
* ```-m 3G``` erlaubt OpenRefine bis zu 3 GB Arbeitsspeicher zu verwenden
* ```-d /data``` definiert das interne Arbeitsverzeichnis von OpenRefine
OpenRefine ist unter der IP-Adresse des Webservers, gefolgt von Port 8888 erreichbar (Beispiel: http://192.168.1.1:8888).
### Schritt 4: Container beenden und neu starten
OpenRefine ist nur solange verfügbar, wie der oben verwendete Befehl in der Kommandozeile läuft.
1. Beenden Sie OpenRefine mit ```STRG``` und ```C``` auf der Kommandozeile.
2. Prüfen Sie, ob OpenRefine jetzt noch im Browser (Beispiel: http://192.168.1.1:8888) erreichbar ist. Es sollte eine Fehlermeldung des Browsers erscheinen.
3. Starten Sie OpenRefine erneut, indem Sie auf der Kommandozeile mit der ```Pfeiltaste nach oben``` den vorigen Befehl auswählen und mit ```Enter``` ausführen.
4. Prüfen Sie, ob OpenRefine jetzt wieder verfügbar ist.
Auf der Kommandozeile können Sie übrigens mitverfolgen, wie der Browser und OpenRefine miteinander kommunizieren. Beim Aufruf von OpenRefine im Browser erscheinen beispielsweise die folgenden POST und GET Befehle in der Kommandozeile:
```
15:10:34.819 [ refine] POST /command/core/load-language (19332ms)
15:10:34.940 [ refine] POST /command/core/load-language (121ms)
15:10:35.223 [ refine] POST /command/core/get-importing-configuration (283ms)
15:10:35.509 [ refine] GET /command/core/get-all-project-metadata (286ms)
15:10:35.632 [ refine] GET /command/core/get-languages (123ms)
15:10:35.721 [ refine] GET /command/core/get-version (89ms)