Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der...

36
COOKBOOK Docker AUFBAU U-GIS GEODATENINFRASTRUKTUR BESITZERIN: HADRBOLEC MICHAEL ERSTELL-DATUM: 15-04-20 VERSION: V0.7 1 STATUS: IN ARBEIT 1 Nummerierung nach dem Komma: nicht abgenommen; vor dem Komma: abgenommene Versionen © 2015 Seite 1 von 36

Transcript of Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der...

Page 1: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

COOKBOOK

DockerAUFBAU U-GIS GEODATENINFRASTRUKTUR

BESITZERIN: HADRBOLEC MICHAEL

ERSTELL-DATUM: 15-04-20VERSION: V0.71

STATUS: IN ARBEIT

1 Nummerierung nach dem Komma: nicht abgenommen; vor dem Komma: abgenommene Versionen© 2015 Seite 1 von 29

Page 2: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

© 2015 Seite 2 von 29

Page 3: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Dokument Titel: Cookbook Aufbau U-GIS

File Name: document.docx

Autoren: Fabian Todt, Michael Hadrbolec

Dokument Typ: Anforderungsdokument

Sicherheit: Eingeschränkt (siehe Verteiler)

© 2015 Seite 3 von 29

Page 4: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

INHALTSVERZEICHNIS

1 Informationen.................................................................................................................................. 51.1 Hintergrund............................................................................................................................. 5

1.2 Rahmenbedingungen?............................................................................................................5

1.3 Entscheidung.......................................................................................................................... 5

2 Docker Architektur.......................................................................................................................... 6

3 Workflow.......................................................................................................................................... 8

4 Testszenario.................................................................................................................................. 10

5 Images............................................................................................................................................ 115.1 Überblick............................................................................................................................... 11

5.2 Tomcat4u Image...................................................................................................................11

5.3 Geoserver4u Image..............................................................................................................11

5.4 DataVolume Container..........................................................................................................115.4.1 Data Volume Container „dv4u_geoserversamples“.................................................125.4.2 Data Volume Container „dv4u_gewaessernetz“.......................................................125.4.3 Data Volume Container „dv4u_clc“..........................................................................12

5.5 Registry4u (Firmenrepository)...............................................................................................12

6 Workflow........................................................................................................................................ 136.1 Service entwickeln................................................................................................................13

6.2 Service Testen......................................................................................................................13

6.3 Services Betreiben................................................................................................................13

7 Anhang........................................................................................................................................... 157.1 Docker Installation Windows.................................................................................................15

7.2 Docker How To.....................................................................................................................177.2.1 Docker Starten.........................................................................................................177.2.2 Interaktion mit Windows...........................................................................................187.2.3 Dockerfile (Image Bauplan)......................................................................................187.2.4 Image.......................................................................................................................197.2.5 Volume.....................................................................................................................207.2.6 Container................................................................................................................. 227.2.7 Registry....................................................................................................................237.2.8 Docker Daemon Port................................................................................................27

7.3 Workaround Private Repository............................................................................................28

7.4 Windows Azure..................................................................................................................... 297.4.1 Verbinden zu Linux Maschine über „ssh“.................................................................29

7.5 Docker unter Windows Azure installieren.............................................................................307.5.1 Zertifikat erstellen.....................................................................................................307.5.2 Ubuntu Long Term support installieren....................................................................30

7.6 Azure Installation..................................................................................................................317.6.1 Erzeuge ein Ubuntu Docker Image..........................................................................31

7.7 OpenSSL Zertifikat erstellen.................................................................................................32

7.8 OpenSSL Zertifikate auf Server kopieren.............................................................................33

© 2015 Seite 4 von 29

Page 5: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

1 INFORMATIONEN

1.1 HINTERGRUND

Gis Services sind kompliziert zu deployen.

Die zugrundeliegenden Datenmengen sind potentiell groß. Vorausgekachelte Kartenservices können mehrere GB groß sein und aus Millionen von einzelnen Files bestehen.

Zuerst müssen die Daten auf den Server kopiert werden, dann die Services im Gis Server konfiguriert werden. Man muss das Service starten. Dann muss getestet werden.

Falls dies Fehlschlägt wieder muss für eine Rollback alles wiederholt werden.

Gesucht ist ein Mechanismus, der diesen Vorgang vereinfacht und es auch für nicht GIS Experten es ermöglicht GIS Services zu deployen und zu betreiben.

1.2 RAHMENBEDINGUNGEN?o Der Entwicklungs- und vor allem der Deployvorgang muss einfacher werden.o Rollback muss möglich sein.o Technologie muss skalierbar seino Technologie muss intern (in House) und Extern (Rechenzentrum) laufen können.o Ein Vendor lock in soll soweit wie möglich vermieden werden.o Es soll mittelfristig Kosteneinsparungen (Lizenz-, Wartungs-, Betriebs- und Personalkosten) bringen.

1.3 ENTSCHEIDUNG

Review der Docker Technologie für GIS Services, da sie folgendes verspricht:

Einfacherer Deploy- und Rollbackvorgango Lokaler Aufbau am Entwicklerrechner (Image versioniert im Firmenregistry)o Unveränderter Deploy auf Develop, Test, Produktion (Vereinfachung gegenüber derzeitigem

Ablauf)o

Bessere Ressourcennutzung als Virtualisierungo 5-7 mal mehr Services als klassische Virtualisierung (Herstellerangaben)

Hosting: o Wird von allen namhaften Cloud-Betreibern unterstützt

Microsoft Azure, Google und Amazon

o Rechenzentrum (in House / Extern) VM mit entsprechend unterstütztem Linux VM

Lizenz Open Source Apache 2.0

Hosting in Azure Cloud ausprobieren

Ziel: Preis ermitteln was GIS Services in der Microsoft Cloud kosten würden

© 2015 Seite 5 von 29

Page 6: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

2 DOCKER ARCHITEKTUR

Abbildung 1 Docker ArchitekturDocker Images werden mittels Docker Files lokal auf der Entwicklermaschine erzeugt („docker build“) getestet („docker run“) und in einer Registry („docker push“ üblicherweise private Firmenregistry für vertrauliche Daten) versioniert abgelegt.

Mittels eines Docker Clients werden auf einem oder mehreren (Docker swarm) Docker Hosts (gilt für alle Stages (Develop, Test, Produktion)) Docker Container (=laufendes Programm, z.B.: eine Microwebsite) über den Docker Daemon administriert (start, stop, …).

Dabei wird das in der Registry abgelegte Docker Image (=unveränderbare Vorlage für die Erzeugung eines Docker Containers) lokal auf den jeweiligen Host heruntergeladen („docker pull“) und dort als Docker Container gestartet.

Baustein Beschreibung

Docker File Ist der Bauplan für ein Docker Image (docker build).

Man kann auf einem bereits existierenden Docker File aufbauen und es dabei wiederverwenden.

Docker Image Vorlage für die Erzeugung eines lauffähigen Docker Container. Wird aus einem Docker File erzeugt.

z.B.: Microwebsite bestehend aus Apache Webserver, HTML Seiten, …

Docker Registry Ablageort für Docker Images (vergleichbar mit einem Archiva Firmenrepository).

In der Docker Registry werden die Images, aus denen dann die lauffähigen Container erzeugt werden gespeichert.

Docker Host Host unter dem der Docker Daemon läuft.

Für die Entwicklung ist dies ein abgespecktes Linux, dass in einer Virtual Box am Entwicklerrechner läuft.

Für die Develop, Test und Produktivinstanz kann dass entweder inhouse im Rechenzentrum oder in einem externen Rechenzentrum und / oder in der Cloud sein.

Docker Container Ist eine aus einem Docker Image erzeugter lauffähiger Container der unverändert

© 2015 Seite 6 von 29

Page 7: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

innerhalb jeder Docker Umgebung (lokal, Rechenzentrum, Cloud, …) läuft.

Dafür wird ein Image entweder lokal erzeugt (während der Entwicklung) bzw. aus der Registry heruntergeladen und anschließend gestartet.

Docker Daemon Verwaltet (startet und stoppt) Docker Container bzw. lädt Docker Images von der Registry herunter.

Docker swarm Poolt mehrere Docker Hosts in einen „virtual“ Docker host. Für einen Docker Client ist ein Docker Swarm Cluster einfach ein Docker Host .

Anmerkung Docker Swarm ist derzeit noch im Betastadium.

© 2015 Seite 7 von 29

Page 8: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

3 WORKFLOW

An den im U etablierten Rollen ändert sich nicht.

uc Actors

User

Entwickler Tester Betrieb

Abbildung 2 Actors

Actor Beschreibung

Entwickler Entwickelt die Applikationen und / oder Services.

Tester Testet die Applikationen und / oder Services

Betrieb Betreibt operative die Applikationen und Services

Abbildung 3 Beschreibung der Actors

© 2015 Seite 8 von 29

Page 9: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

uc Primary Use Cases

Registry Infrastructure (in house)

Production infrastructure (in house /external /cloud)

Production infrastructure (in house /external /cloud)

Test infrastructure (in house /external / cloud)

Test infrastructure (in house /external / cloud)

develop Infrastructure (localmachine)

develop Infrastructure (localmachine)

dev elop

test

run

Registry

Betrieb

Entwickler

Tester

Es wird in jedem Fall unverändert die gleiche Image Version verwendet

run docker container(s) based onimage version

develop (build docker image,run image as container)

add (push) docker imageversion to registry

get (pull) dockerimage version

run docker container(s) based on image version

get (pull) docker image version

Abbildung 4 Workflow: Develop Test Run Workflow

Use Case Workflow

Develop 1. Der Entwickler entwickelt lokal die Applikation und / oder das Service.2. Es wird lokal ein Docker File erzeugt.3. Aus dem Docker File wird ein Docker Image gebaut.4. Das Docker Image wird lokal getestet (d.h. als Container z.B. in Virtual Box Image

gestartet)5. Wenn der Container erwartungsgemäß funktioniert wird das Docker Image im

Firmen Repository in einer bestimmten Version (Tagname) abgelegt

Test 1. Aus dem Firmen Repository das Image in einer bestimmten Version (Tagnummer) holen und in einem einen Container starten (Die Umgebung kann Inhouse, in einem Externen Rechenzentrum und / oder in der Cloud sein)

2. Testena. Freigabe für Produktionb. Keine Freigabe für Produktion ( zurück zur Entwicklung zum Bugfixen)

Run (Produktion) 1. Aus dem Firmen Repository das Image in einer bestimmten Version (Tagnummer) holen und in einem einen Container (bzw. entsprechend skalieren) starten (Die Umgebung kann Inhouse, in einem Externen Rechenzentrum und / oder in der Cloud sein)

2. Testena. Alles okay Produktiver Betriebb. Fehler Rollback

Sonderfall Rollback 1. Container stoppen2. Aus dem Firmen Repository das Image in einer bestimmten vorherigen Version

(Tagnummer) holen und in einem einen Container starten3. Testen

Abbildung 5 Workflow: Beschreibungen

© 2015 Seite 9 von 29

Page 10: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

4 TESTSZENARIO

Es wurden für den Test folgende Rahmenbedingungen angenommen.

Der GIS Server der Wahl ist Geoserver (war File, dass innerhalb eines Servlet Containers läuft)

Als Testdaten sollen drei Szenarien verwendet werden:

1. Die in GeoServer mitgepackten Testdaten (ist für erste testzwecke einfach, da man alle möglichen Services vorkonfiguriert hat und die Größe der Datenmenge überschaubar ist).

2. Corine Landcover (mittelgroßer Datensatz)3. Gewässernetz (große Datenmenge komplexere Signatur)

Als Cloud soll Microsoft Azure verwendet werden

Um realistische Kosten ermitteln zu können sollen die Szenarien 2 und 3 mit einem reproduzierbaren Traffic für eine bestimmte Zeit belegt werden (mittels Apache JMeter Test) um daraus Kosten ableiten zu können.

© 2015 Seite 10 von 29

Page 11: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

5 IMAGES

Als ersten schritt wurden die entsprechenden Docker Images entwickelt.

5.1 ÜBERBLICK

Abbildung 6 Image Architektur für GeoservicesAuf Basis eines trusted java 8 Docker Images (aus der öffentlichen Docker Registry) wurde ein Tomcat Image („tomcat4u“) und darüber eine GeoServer Image („geoserver4u“) entwickelt.

Die eigentliche Konfiguration und Daten wurden in drei Data Volume Containern (=spezielles Docker Image für Daten „dv4u_geoserversamples“, „dv4u_clc“, „dv4u_gewaessernetz“) entwickelt.

Die Details sind in den nachfolgenden Kapiteln beschrieben.

Alle Images wurden im SVN Firmen Repository und https://develop.umweltbundesamt.at/svn/docker abgespeichert.

5.2 TOMCAT4U IMAGE

SVN URL https://develop.umweltbundesamt.at/svn/docker/trunk/tomcat4u

Baut auf dem „java:8-jre“ und installiert Tomcat 8.023 (da GeoServer mit der Version 8.0.24 nicht funktioniert). Es werden alle nicht notwendigen Files (admin, webapp, docs, manager, …) gelöscht und das „server.xml“ File adaptiert.

5.3 GEOSERVER4U IMAGE

SVN URL https://develop.umweltbundesamt.at/svn/docker/trunk/geoserver4u

Baut auf dem „tomcat4u“ Image auf. Installiert den GeoServer und entpackt diesen damit er schneller startet. Es werden die Umgebungsvariablen für den Daten & Konfigurationsfolder auf „/data“ gesetzt und als Volume exponiert, damit man zum Containerstart dann die individuelle Konfiguration & Daten als Data Volume Container „mounten“ kann.

5.4 DATAVOLUME CONTAINER

Baut auf einem busybox Container (=minimales Linux) auf. Kopiert die individuelle Geoserver Service Konfiguration & Daten in den „/data“ folder und exponiert sie als „VOLUME“.

© 2015 Seite 11 von 29

Page 12: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Dadurch wird es im Produktiven Betrieb möglich GeoServer Instanzen horizontal zu skalieren (und dabei gleichzeitig die Daten nur einmal vorhalten zu müssen [Image wird wiederverwendet und nur der RW Layer entsteht als Overhead].

Ein weiterer Vorteil ist die Abstraktion der Daten vom darunterliegenden Host (siehe Data Volume Container).

Folgende konkreten Data Volume Container wurden für den Testfall umgesetzt.

5.4.1 Data Volume Container „dv4u_geoserversamples“SVN URL https://develop.umweltbundesamt.at/svn/docker/trunk/dv4u_geoserversamples

5.4.2 Data Volume Container „dv4u_gewaessernetz“SVN URL https://develop.umweltbundesamt.at/svn/docker/trunk/dv4u _gewaessernetz

5.4.3 Data Volume Container „dv4u_clc“SVN URL https://develop.umweltbundesamt.at/svn/docker/trunk/dv4u _clc

5.5 REGISTRY4U (FIRMENREPOSITORY)Um Images auf verschiedenen Hosts zu nutzen und zu teilen werden diese nicht nur lokal gespeichert sondern in einer zentralen Registry. Aus dieser Registry werden Images geladen die lokal noch nicht vorhanden sind. 2

Docker bietet dazu die öffentliche Registry „Docker Hub“ an. Diese enthält viele Images. Für vertrauliche Unternehmenskritische Images (wie die U-GIS-Images) empfiehlt es sich eine private Unternehmensregistry aufzubauen.

SVN URL https://develop.umweltbundesamt.at/svn/docker/trunk/registry4u

Abbildung 7 "registry4u" ArchitectureDas interne Firmenrepository basiert auf der Docker Standard „registry:2“. Die Daten werden in einem Data Volume conatiner „dv4u-registry“ abgelegt.

Der Data Volume Container kann dann genauso wie jeder andere Data Volume Container gesichert (=backup) bzw. wiederhergestellt (=restored) werden.

Anmerkungen

Das direkte mounten eines Windows Folders ist bei den Test nicht gelungen. Die privateFirmenregistry muss für den Produktiven Betrieb auch von den jeweiligen Stages (Develop / Test / Produktion) aus zugreifbar sein (War für die Tests nicht möglich).

2 Siehe https://docs.docker.com/registry/

© 2015 Seite 12 von 29

Page 13: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

6 WORKFLOW

6.1 SERVICE ENTWICKELN

Der Workflow ist unverändert zum bisher etablierten Workflow. Entwicklung Test Produktion

Abbildung 8 Workflow: Service entwickelnDer GeoServer wird lokal am jeweiligen Developer Rechner ausgeführt. Der Autor kopiert alle notwendigen Daten in den Datenfolder des GeoServer und führt die Service Konfiguration durch (Dabei kann der GeoServer entweder lokal installiert und / oder als Docker Container in einer „Virtual Box“ laufen).

Die Konfiguration und die Daten werden einfach in einen Data Volume Container kopiert als und dieser in der privaten Firmenregistry versioniert abgelegt.

6.2 SERVICE TESTEN

Identischer Workflow wie beim Service betreiben (siehe 6.3 Services Betreiben).

6.3 SERVICES BETREIBEN

Es wird das neue Service („geoserver4u“ und „${data volume coatiner}“) aus der privaten Firmen Registry heruntergeladen.docker pull geoserver4u:2.51 & docker pull dv4u-clc:2012

Abbildung 9 Für den Service Container notwendige Images herununterladenDadurch sind alle zum starten des Container notwendigen Daten bereits am Docker Host und das starten geht entsprechend schneller.

Dann wird wenn das Service bereits existiert es gestoppt.docker stop myOldService

Abbildung 10 (wenn vorhanden) bereits bestehenden Service Container stoppen

© 2015 Seite 13 von 29

Develop Test Production

Geos

erve

r lok

al

konfi

gurie

ren

Data

Vol

ume

Cont

aine

r Im

age

baue

n

in d

ie p

rivat

e Fi

rmen

regi

stry

de

ploy

en Test

Prod

uktio

n

Page 14: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Als nächstes wird das Service gestartet.docker run –restart=allways -p 8090:8080 --volumes-from dv4u_clc:2012 --name myNewService geoserver4u:2.51

Abbildung 11 Neuen Service Container startenStartet den neuen GeoServer am externen Port 8090 (Interner Port 8080) der automatisch restartet wird und mounted die Geoserverkonfiguration und zugehörigen Daten.

Wenn es erfolgreich läuft kann der alte Container und dessen Image gelöscht werden (man will ja keine unnötigen Daten am Docker Host liegen haben).# alten container löschendocker rm myOldService# altes image löschendocker rmi geoserver4u:2.4 & docker rmi dv4u_clc:2006

Abbildung 12 Alten Container & zugrundeliegende Images löschenAlternativ kann das alte Service (wenn vorhanden) wieder gestartet werden (=Rollback). Und man löscht den neuen Service Container und dessen zugrunde liegenden Images.docker start myOldService

# Neuen Container löschendocker rm myNewService# neue images löschendocker rmi geoserver4u:2.51 & docker rmi dv4u_clc:2012

Abbildung 13 (wenn notwendig) Rollback

© 2015 Seite 14 von 29

Page 15: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

7 ANHANG

7.1 DOCKER INSTALLATION WINDOWS

Die Docker Installation entwickelt sich rasch weiter detaillierte Instruktionen sind unter http://docs.docker.com/windows zu finden.

Send one-tile, anonymous diagnostic during install nicht anklicken Auf „Next“ klicken

Standardeinstellung lassen Auf „Next“ klicken

Alles Auswählen Auf „Next“ klicken

© 2015 Seite 15 von 29

Page 16: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Standardeinstellung lassen Auf „Next“ klicken

Auf „Install“ klicken

Auf „Finish“ klicken

!!! Wichtig ist dass der Docker Folder in der System Path Variable eingetragen ist. Wenn dies nicht der Fall ist wird docker als Kommando in der bash nicht gefunden.

7.1.1.1 Wie kann man die Docker Installation überprüfen?

© 2015 Seite 16 von 29

Page 17: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Abbildung 14 Überprüfen der Docker InstallationMan kann die Docker Installation durch Eingabe in der Bash

„docker –v“ Gibt die Installierte Docker version aus. „docker run hello-world“ Gibt „hello world“ aus.

überprüfen.

7.1.1.2 UpgradeDocker entwickelt sich rasch weiter daher ist es notwendig auf einem aktuellen Stand zu bleiben.

ToolboxDafür wird einfach die neueste Docker Toolbox heruntergeladen und darüber installiert.

Docker Machinedocker machine upgrade default

Abbildung 15 Upgrade der "default" docker machine in der Commandline

7.2 DOCKER HOW TO

Im Folgenden werden grundlegende Docker Prinzipien und Tasks erklärt

7.2.1 Docker Starten

Abbildung 16 Docker startenMan klickt einfach auf das am Desktop befindliche „Docker Quickstart Terminal“ Icon. Dadurch wird die Docker Bash aufgerufen über die die Docker Befehle abgesetzt werden können.

Im terminal erscheint weiters die IP Adresse unter der die Docker machine (hier mit dem Namen „default“ und der IP Adresse 192.168.99.100) aufgerufen werden kann. Dies ist insofern wichtig, da man ja in Docker z.B. eine Webapplikation laufen lassen kann und dann über diese IP Adresse sie zu testen aufrufen kann.

© 2015 Seite 17 von 29

Page 18: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

7.2.2 Interaktion mit WindowsEs ist notwendig lokal Files zu erstellen bzw. diese zu editieren. dafür ist es notwendig, dass in die Docker bash das Lokale Filesystem eingebunden ist.

Beispiel: Man editiert das Dockerfile mit Notepad. Kopiert Daten die in ein Image gepackt werden sollen in eine Folder, …

Glücklicherweise mounted das von Docker verwaltete Virtual Box Image den Windows Users Folder automatisch in die Docker Bash.

7.2.3 Dockerfile (Image Bauplan)Tabelle 1 Windows: Virtual Box shared automatisch Folder "/c/Users"

Docker shared in der bash automatisch den „Users“ Folder.

Daher im User Folder eine Unterfolder anlegen in dem die Docker Files editiert (z.B. mit einer Entwicklungsumgebung wie Eclipse) werden können.

z.B. „C:\Users\hadrbolec\docker4u“

Da wir vertrauliche Daten verwenden brauchen wir ein lokales Docker Repository.

Anlegen eines Folder C:\Users\${username}\docker4u-repo

z.B.: „C:\Users\hadrbolec\docker4u-repo“

Es ist ein simples Text File mit dem Namen "Dockerfile" (ohne File Extension) dass die Bauanleitung des jeweiligen Images enthält.FROM busybox

MAINTAINER hadrbolec <[email protected]>

CMD ["echo", "hello world4u"]

Abbildung 17 Besipiel DockerfileEin Dockerfile kann auf einem bestehenden Image aufbauen (d.h. man kann es wiederverwenden).

© 2015 Seite 18 von 29

Page 19: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Abbildung 18 Übereinanderstapelbare Container3

D.h. man kann sie übereinander wie Container stapeln. In unserem Beispiel wird auf ein minimalistischen Linux (=busybox) einfach die Ausführung des Befehls „echo ‚hello world‘“ draufgestapelt. Man kann maximal 127 Dockerfiles (entspricht Docker Images) übereinanderlegen.

Eine genaue Beschreibung der erlaubten Befehle findet man unter folgendem URL https://docs.docker.com/reference/builder/ (20.8.2015)

Eine Beschreibung wie man am besten Docker Files schreibt findet man unter folgendem URL https://docs.docker.com/articles/dockerfile_best-practices/ (20.8.2015)

7.2.4 ImageEin Image ist eine nur lesbare Vorlage zum erstellen für Docker Container. Beispiel: ein Image kann Ubuntu den Apache Webserver und eine Micro Webseite enthalten.

Docker stellt Möglichkeiten zur Verfügung neue Images zu erstellen oder bestehende zu ändern. D.h. man kann eigene Images auf Basis von bestehenden Images erstellen und erspart sich damit Zeit.

Abbildung 19 Docker Image (Copy on Write Pattern)Beispiel: Das Tomcat Image verwendet das Java Image wieder, das wiederum auf dem Ubuntu Basis Image aufbaut, …

Wenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden Sie auf diesen Layer angewandt.

3 https://www.docker.com/whatisdocker 20.8.2015

© 2015 Seite 19 von 29

eigenes Image

busybox Image

Page 20: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Beispiel: Wenn man ein File ändert wird es vom darunterligende Layer in den „read/write“ Layer kopiert und dort geändert. Das ursprüngliche File existiert weiterhin, ist aber von der Kopie verdeckt (=versteckt). (Copy on Write Pattern). Die Darunter liegenden Layer (Images) bleiben unverändert „read only“.

7.2.4.1 Wie kann ein Image gebaut werden?Ein Image wird auf Basis eines "Dockerfiles" gebaut. docker build -t ${tagname} ${path to Dockerfile}

Abbildung 20 (Docker) Image erzeugen

# Das Beispiel baut lokal das Image auf Basis des Dockerfiles tomcat4u/Dockerfiledocker build -t u/tomcat4u:v3 tomcat4u

# Das Beispiel baut lokal das Image auf Basis des Dockerfiles Dockerfile im gleichen Pfaddocker build -t u/tomcat4u:v3 .

Abbildung 21 Beispiel (Docker) Image erzeugen

Das Beispiel baut lokal das Image auf Basis des Dockerfiles tomcat4u/Dockerfile

7.2.4.2 Wo werden die Images am lokalen Host abgelegt?Mit dem folgenden Befehl kann man sich die lokal am Host liegenden Images ansehen.hadrbolec@ULAP0415 MINGW64 ~/docker4u$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEhello-world latest 975b84d108f1 8 days ago 960 B

Die lokalen Images liegen unter dem Folder „/var/lib/docker“ Directory

7.2.4.3 Wie kann man die am Host vorhandenen Images abfragen?docker images

Abbildung 22 (Docker) Images abfragen

7.2.4.4 Wien kann man ein am Host liegenden Image löschen?docker rmi ${image name}

Abbildung 23 (Docker) Images löschen

7.2.5 VolumeEin Data Volume ermöglicht es Folder oder Files beim Starten eines Docker Containers zu mounten.

Diese werden über allfällig im Container befindliche Daten (Folder und / oder Files) gelegt. Wenn man in den Folder etwas schreibt wird es in den gemounteten Folder geschrieben bzw. gelöscht.

Abbildung 24 mount Data VolumeBeispiel: der Container hat einen Folder /data mit dem File „test1.txt“ und „test2.txt“. Es wird ein Folder gemounted der die Files „test2.txt“ und „test3.txt“ und den Folder „debug“ hat. Das Ergebnis ist dass im Folder die Files „test1.txt“ (aus Container), „test2.txt“ (aus gemounteten Folder) und „test3.txt“ (aus gemounteten Folder) existieren.

© 2015 Seite 20 von 29

Page 21: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Man kann auf zwei Arten Files oder Folder Mounten

7.2.5.1 Data Volume (Lokal aus dem Host Filesystem)docker run -v [path in local Filesystem]:[path in container] [image]

Abbildung 25 Mounten eines Folders aus dem lokalen Filesystem in einen ContainerDas folgende Beispiel mounted den lokalen „//c/Users/hadrbolec/docker4u/dv4u_geoserversamples/data“ Folder in den „/data“ Folder interaktiv (Option „-it“)in busybox. docker run -it -v //c/Users/hadrbolec/docker4u/dv4u_geoserversamples/data:/data busybox

Abbildung 26 Mounten eines Folders aus dem lokalen Filesystem in einen ContainerMan kann sich nun in der Command Line den Inhalt des gemounteten Folders ansehen.# ls /dataREADME.rst data gwc layergroups palettes styles wcs.xml workspacescoverages demo gwc-gs.xml logging.xml plugIns user_projections wfs.xml wwwcsw.xml global.xml gwc-layers logs secur-ity validation wms.xml

Abbildung 27 Anzeige des Inhalts des gemounteten /data FoldersGrundsätzlich ist das Mounten aus dem lokalem Filesystem nicht zu empfehlen, da dadurch eine direkte Abhängigkeit zur darunterliegenden Infrastruktur entsteht und dies nicht portabel ist.

Mach meist nur dann Sinn, wenn man Backupen oder Restoren will.

7.2.5.2 Data Volume ContainerDer Data Volume Container dient dazu Persistente Daten über mehrere Container zu sharen. D.h. innerhalb einer Ablaufumgebung existieren die Daten nur einmal. Die Daten liegen in einem Docker Container.

7.2.5.2.1 Wie erzeugt man einen Data Volume Container?

Ein Data Volume Container ist grundsätzlich ein Docker Image. Daher erzeugt man den Data Volume Container über ein klassisches Docker File, dass seine Daten als Volume exponiert.FROM busyboxMAINTAINER hadrbolec <[email protected]>

# add an example file and a folder to the imageRUN mkdir -p /data/debugRUN echo "hello world4u" | tee /data/helloWorld4u.txt

# expose the data you want to share as volumeVOLUME /data

Abbildung 28 Beispiel Data Volume Container DockerfileMan erstellt ein klassisches Docker File in dem sich alle Daten befinden und baut es

 Wie kann man einen Data Volume Container überprüfen?

© 2015 Seite 21 von 29

DVC Image erzeugen

(Dockerfile)

Create DVC Container

(docker create)

Reuse DVC durch Mounten

in jeweiligen Container

Page 22: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

docker run -it --rm ${image name}

Beispiel:docker build -t dv4u .docker create --name dv4u_container dv4udocker run --rm --volumes-from dv4u_container busybox ls data

Abbildung 29 Starten eines Data Volume Container im interaktiven ModusIndem man ihn interaktiv startet und man kann sich dann dessen Inhalt über Bash Befehle wie z.B. „ls“ ansehen.

Wie kann man einen Data Volume Container erzeugen?docker create --name ${Container Name} ${Image Name}

Abbildung 30 Lokales erzeugen eines Data Volume Container

7.2.5.2.2 Wie wird ein Data Volume Container eingebunden?Man kann in einen Container auch mehrere Data Volume Conatianer einbinden.docker run --volumes-from ${Data Volume Container Name} ${Image Name}

Abbildung 31 Mounten eines Data Volume Container

7.2.5.2.3 Wie kann man einen Data Volume Container backupen?Es wird ein neuer Container auf basis „busybox“ erzeugt, in den man den Data Volume Container mounted und im busybox Container das tar Command ausgeführt.

Anmerkung der Data Volume Container muss created d.h. erzeugt worden sein.docker run --volumes-from [Data Volume Containername] -v [local Path]:/[backup Path] busybox tar cvf [backup Path]/[tar filename]. [folder to backup]

Abbildung 32

docker run --volumes-from backup_example -v //c/Users/hadrbolec/docker4u:/backup busybox tar -cvf backup/backup.tar data

Abbildung 33cfv (Create Archive, f… File, v… Verbose)

7.2.5.2.4 Wie kann man einen Data Volume Container restoren?Erzeugen eines neuen Data Volume Containersdocker run -v /test/data --name testdata busybox true

Abbildung 34

tar -c sample/ | docker run -i --rm -w /test/data --volumes-from testdata busybox tar -xv

Abbildung 35

7.2.6 ContainerEin Container ist eine Ablaufumgebungsunabhängige (=portable) Kapselung von allen, was zum laufen eines Programms notwendig ist (Laufzeitumgebung, Werkzeuge, Systembibliotheken, Filesystem, …)

7.2.6.1 Container startenZuerst muss (falls noch keiner für diesen Datensatz besteht) ein geoserver-data-Container erstellt werden. Data-Only-Container laufen nicht sondern werden nur erstellt:

© 2015 Seite 22 von 29

Page 23: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Wobei statt „geoserver-dataNAME“ ein Name angegeben werden soll (am besten ein leicht zu identifizierender und einzigartiger(!)). „geoserver-data“ ist das Image von dem der Container erstellt wird.

Danach können ein oder mehrere geoserver-Container mit folgendem Befehl gestartet werden:

Hierbei ist folgendes zu beachten:

-p hostPort:containerPort gibt einen Port frei. Der containerPort muss dabei schon im Dockerfile/Image exposed werden. Als hostPort kann jeder mögliche Port am host angegeben werden

--volumes-from bindet die exposed Volumes des geoserver-data containers ein (also das data und das log directory) - :ro sagt Docker, dass dieses Volume/Verzeichnis read-only ist (:rw bzw. nichts wäre read-write) – zum Ändern der Daten muss :ro also weggelassen werden

geoserver-dataNAME muss durch den jeweiligen Namen des geoserver-data-Containers ersetzt werden

gsXY1 gibt den Namen des Containers an – auch dieser sollte leicht zu identifizieren sein und muss einzigartig sein

7.2.6.2 Container stoppendocker stop ${container name}

Abbildung 36 laufenden Docker Container stoppenEin geoserver-data-Container kann nicht gestoppt werden sondern nur gelöscht werden. Dabei sollte der Parameter –v angegeben werden um die Volumes mit zu löschen. Wird dies nicht gemacht, werden die Volumes nicht gelöscht, sind aber auch nicht zugänglich.4 Volumes sind nur so lange zugänglich, so lange mindestens ein Container (muss nicht laufen) darauf verweist/zugreift.

7.2.6.3 Docker Container anzeigendocker ps

Abbildung 37 Anzeige der laufenden Docker Containerdocker ps -a

Abbildung 38 Anzeige aller Docker Container

7.2.6.4 Docker Container löschenDocker-Container können einfach per Befehl gelöscht werden, sollten aber vorher gestoppt werden:

7.2.7 RegistryDocker Images müssen von der Docker Ablauf Umgebung gefunden, heruntergeladen werden um danach ausgeführt werden zu können.

Da die Images nicht Öffentlich zugängliche Informationen (z.B. Daten, Konfigurationseinstellungen, …) beinhalten können muss eine Lokales Firmenrepository (analog zu Maven) aufgesetzt werden.

4 siehe http://docs.docker.com/userguide/dockervolumes/#mount-a-host-file-as-a-data-volume

© 2015 Seite 23 von 29

(sudo) docker create --name geoserver-dataNAME geoserver-data

(sudo) docker run –d –p 8080:8080 --volumes-from geoserver-dataNAME:ro --name gsXY1 geoserver

docker rm-f (force – löscht auch laufende)-v (löscht auch volumes bei data-only-containern)

Page 24: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Abbildung 39 Private Docker RegistryDie Private Docker Registry wird in einem von Docker gemanagten Container gestartet, in den die Daten als Data Volume Container gemountet werden.

Dadurch kann das Repository unabhängig vom darunterliegenden Host verwendet5 werden.

Detaillierte Dokumentation ist unter folgendem URL zu finden https://docs.docker.com/registry/6

7.2.7.1 Installation der RegistryErzeugen des Datavolume Containers aus folgendem Dockerfile.FROM busyboxMAINTAINER hadrbolec <[email protected]>

# add an example file and a folder to the imageRUN mkdir -p /var/lib/registry# expose the data you want to share as volumeVOLUME /var/lib/registry

Abbildung 40 Dockerfile für dv4-registry Data Volume ContainerEs wird einfach der Folder „/var/lib/registry“ erzeugt und als VOLUME exponiert.

Danach wird daraus ein Docker Image gebaut.docker build -t dv4u-registry .

Abbildung 41 Erzeugen des Data Volume Caontainer Images für die Registry

7.2.7.2 Starten / StoppenStartJetzt kann die Registry lokal gestartet werdendocker create --name dv4u-registry dv4u-registry

docker run -d -p 5000:5000 --restart=always --name registry --volumes-from dv4u-registry registry:2

Abbildung 42 Starten der lokalen RegistryUm den Data Volume Container verwenden zu können muss man ihn erst mal aus einem Image erzeugen („docker create …“). Dann kann die Registry gestartet werden und der Data Volume Container verwendet werden („—volumes-from …“).

StopDie lokale Registry wird folgendermaßen gestoppt:docker stop registry && docker rm -v registry

Abbildung 43 Stoppen der lokalen Registry

5 Es war im Rahmen der Tests nicht möglich direkt das Windows Filesystem zu mounten. 6 28.8.2015

© 2015 Seite 24 von 29

Page 25: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

7.2.7.3 Backup / RestoreBackupMan kann den Data Volume Container folgendermaßen ins lokale Filesystem wegsicherndocker run --rm --volumes-from dv4u-registry -v //c/Users/had-rbolec/docker4u/registry4u:/backup busybox tar cvf backup/re-gistry4u.tar var/lib/registry

Abbildung 44 Backup der lokalen RegistryEs wird dafür der Data Volume Container in das Busybox Image (= minimales Linux) gemountet. Zusätzlich mounted man das lokale Filesystem in den Container und exportiert den inhalt des „/var(lib/registry“ Folders als tar File.

Restoredocker rm dv4u-registrydocker create --name dv4u-registry dv4u-registry docker run --rm --volumes-from dv4u-registry -v //c/Users/had-rbolec/docker4u/registry4u:/backup busybox tar xvf backup/re-gistry4u.tar

Abbildung 45 Restore der lokalen RegistryUm eine lokale Sicherung wieder zu restoren muss zuerst ein allfällig vorhandener Data Volume Conatainer gelöscht werden („docker rm …“). Dann erzeugt man ein leeren Data Volume Container („docker create …“). Als letzter schritt wird das Tar File wieder in den Data Volume Container zurückgespielt.

7.2.7.4 Wie kann man ein Image laden?Das image kann mittels folgenem Befehl geladen werdendocker pull [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]

Abbildung 46 Image aus Registry laden

Anmerkung: Die Registry url ist optional und zeigt wenn man sie weglässt auf den Public Dockerhub ()Beispiel:docker pull localhost:5000/u/hello-world4u

Abbildung 47 Beispiel Image aus lokaler Registry laden

7.2.7.5 Wie kann man ein Image in die Registry publizieren?Man holt sich das Image lokal her (bei public images) docker push NAME[:TAG]

Abbildung 48 Beispiel Image aus lokaler Registry laden

Man Tagt das Image damit es auf das lokale Repository zeigt# Tag image to point to repositorydocker tag u/hello-world4u localhost:5000/u/hello-world4u# push the tagged image to the local repositorydocker push localhost:5000/u/hello-world4u --disable-content-trust=true Man publiziert (=push) das getagte Image in das lokale RepositoryMan holt sich das Image aus dem Repository siehe "Wie kann man eine Image Laden?"

© 2015 Seite 25 von 29

Page 26: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

7.2.7.6 Wie kann man ein Image in der Registry löschen?$ curl -X DELETE localhost:5000/v1/repositories/ubuntu/tags/latest

7.2.7.7 Docker Installation

7.2.7.7.1 VorbedingungenNachsehen ob der Linux Kernel > 3.10 ist.uname -r

Abbildung 49 Abfrage Kernel VersionUpdate der docker apt resources. Dazu muss ein neues Repository registriert werden.apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys

Abbildung 50 Das Repository registrierenu4u@u4u:~$ sudo pico /etc/apt/sources.list.d/docker.list

Abbildung 51 Die Ubuntu Version in „/etc/apt/sources.list.d/docker.list“ eintragenWenn das File bereits besteht alle bestehenden Einträge lösche un mit folgenden Eintrag versehen.

deb https://apt.dockerproject.org/repo ubuntu-trusty mainAbbildung 52 Die Ubuntu Version 14.04 LTS in „/etc/apt/sources.list.d/docker.list“ eintragen

Updaten des apt Package indexes.apt-get updateapt-get purge lxc-docker*apt-cache policy docker-enginesudo apt-get updatesudo apt-get install linux-image-generic-lts-trustysudo reboot

Abbildung 53 Alle Vorbedingunegn für Docker Installationen

7.2.7.7.2 Docker Installation sudo apt-get updatesudo apt-get install docker-engine

Abbildung 54 Installation der Docker Engine

© 2015 Seite 26 von 29

Page 27: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

sudo docker run hello-world

Hello from Docker.This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com

For more examples and ideas, visit: https://docs.docker.com/userguide/

Abbildung 55 Testen der Docker Engine

7.2.8 Docker Daemon Port

7.2.8.1 AzureDa im Firewall der Standard Docker Port 2376 gesperrt ist wurde für den Test der Port auf 9999 verschoben.

Abbildung 56 Docker Endpoint verschieben und mappenDafür wird bei der VM ein neuer „Endpoint“ mit dem Namen „Docker“ angelegt, der extern den Port 9999 auf den internen Standard Docker Port 2376 mapt.

© 2015 Seite 27 von 29

Page 28: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

Aus Sicherheitsgründen wird noch eine zusätzliche Access Control auf „gate00.umweltbundesamt.at“ (IP 193.170.161.222/32) angelegt. Dadurch kann nur vom U aus auf den Port zugegriffen werden.

Andere Ports wie Port 80, … werden analog freigegeben.

7.2.8.2 Docker in der VMAus Sicherheitsgründen ist Docker Daemon standardmäßig nur über den tcp://usr/bin/docker erreichbar.

In der Cloud muss der Zugriff über tcp://${IP Adress}:2376 ermöglicht werden. Daher muss der Daemon zusätzlich auf diesen Port lauschen.

sudo pico /etc/default/docker

# Docker Upstart and SysVinit configuration file

# Customize location of Docker binary (especially for development testing).#DOCKER="/usr/local/bin/docker"

# Use DOCKER_OPTS to modify the daemon startup options.#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

# If you need Docker to use an HTTP proxy, it can also be specified here.#export http_proxy="http://127.0.0.1:3128/"

# This is also a handy place to tweak where Docker's temporary files go.#export TMPDIR="/mnt/bigdrive/docker-tmp"DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376"

Abbildung 57 Exponieren des Docker Daemon Ports 2376 und 2375 (Grün hervorgehoben)

7.2.8.3 Docker ClientUm den ungesicherten Client verwenden zu können muss in der Command Line folgendes gesetzt werden. unset DOCKER_TLS_VERIFY & unset DOCKER_CERT_PATH

Abbildung 58 Kommunikation über ungesicherte TCP Verbindungdocker –H u4u.cloudapp.net:9999 info

Abbildung 59 Test der Kommunikation über ungesicherte TCP VerbindungWiederherstellen der ursprünglichen EinstellungEinfach aus der GIT Bash mit „exit“ aussteigen und danach das „Docker Quickstart Terminal“ auf der lokalen Maschine wieder aufrufen. export DOCKER_CERT_PATH=C:\\Users\\hadrbolec\\.docker\\machine\\machines\\default & export DOCKER_TLS_VERIFY=1

Abbildung 60 Alternativ kann man die Variabeln auch manuell setzenAnmerkung: „\\“ Achtung Escape Charakter.

7.3 WORKAROUND PRIVATE REPOSITORY

Da das Private Repository von außen nicht erreichbar ist wurden die Images als tar Files exportiert und anschließend mit secure copy auf die VM kopiert.docker save dv4u_gewaessernetz > image_dv4u_gewaessernetz.tardocker save dv4u_clc > image_dv4u_clc.tardocker save dv4u_geoserversamples > image_dv4u_geoserversamples.tardocker save geoserver4u > image_geoserver4u.tar

scp image_dv4u_gewaessernetz.tar image_dv4u_clc.tar image_dv4u_geoserver-

© 2015 Seite 28 von 29

Page 29: Cookbook Aufbau U-GIS · Web viewWenn Docker einen Container aus einem Image startet ist der „read/write“ (=Writeable Container) leer. Wenn eine Änderung passiert wie werden

Cookbook Aufbau U-GIS

samples.tar image_geoserver4u.tar [email protected]:.

Am Remote Host kann man die Docker Images nun wieder laden.sudo docker load < image_dv4u_clc.tarsudo docker load < image_dv4u_gewaessernetz.tarsudo docker load < image_dv4u_geoserversamples.tarsudo docker load < image_geoserver4u.tar

Man kann sich die nun vorhandenen Docker Images ansehendocker images

© 2015 Seite 29 von 29