SlideShare ist ein Scribd-Unternehmen logo
Martin Christen
FHNW – Fachhochschule Nordwestschweiz
Hochschule für Architektur, Bau und Geomatik
Institut Vermessung und Geoinformation
martin.christen@fhnw.ch
@MartinChristen
Einführung zu Docker für Python-Entwicklung
+
3 April 2016InstitutVermessung undGeoinformation 2
Kurzvorstellung
Martin Christen
Dozent für Geoinformatik und 3D-Computergrafik
FHNW - Fachhochschule Nordwestschweiz
Hochschule für Architektur, Bau und Geomatik
Institut Vermessung und Geoinformation
Lehrtätigkeit
– Python-Programmierung (1. – 3. Semester)
– Web-Technologien (1. Semester)
– Geoinformatik (5. Semester)
– Geoprocessing mit Python (Master-Studiengang)
– 3D-Computergrafik (Master-Studiengang)
Primäre Forschungsinteressen
– 3D-Computergrafik als Webservice (insb. Bildverarbeitung/Ray-Tracing)
– Large-Scale 3D-Rendering
– Big Data & (Geo-)Datenprozessierung @MartinChristen
GitHub: MartinChristen
3 April 2016InstitutVermessung undGeoinformation 3
Ausgangslage:OpenWebGlobe Projekt
3 April 2016InstitutVermessung undGeoinformation 4
Motivation: 3D-Streaming im Webbrowser
MapData © OpenStreetMapcontributors
BTh Hürbi/Daetwyler,MTh Lucas Oertli,2013
3 April 2016InstitutVermessung undGeoinformation 5
90 CityGML files (2.72 GB)
26'474 textures (1024x1024), unkomprimierte Grösse ca. 77 GB
Orthophoto unkomprimiert ca. 430 GB
3 April 2016InstitutVermessung undGeoinformation 6
OpenStreetMap 3D – 3dmap
Quelle: BTh, Daniel Rettenmund 2015
3 April 2016InstitutVermessung undGeoinformation 7
App: unsichtbares sichtbar machen (Römerstadt Augusta Raurica)
3 April 2016InstitutVermessung undGeoinformation 8
Geodatenprozessierung
Web Viewer
• HTML5, WebGL, JavaScript
Data Processing &
Storage/Cache
• Python
• JavaScript (node.js)
• C++
• Optimal im HPCC
Raw data
3 April 2016InstitutVermessung undGeoinformation 9
Geodatenprozessierung
Web Viewer
• HTML5, WebGL, JavaScript
Data Processing &
Storage/Cache
• Python
• JavaScript (node.js)
• C++
• Optimal im HPCC
Raw data
Neue Entwicklerin/neuer Entwickler im Team ?
-> Wo beginnen ???
Wie kann ich Entwicklungsumgebung aufsetzen ??
Fehler finden ?
Testen ?
...
3 April 2016InstitutVermessung undGeoinformation 10
Problematik bei Web-Services
(Quelle: docker.io)
3 April 2016InstitutVermessung undGeoinformation 11
Eine Analogie: Transport von Gütern vor ca. 1950:
(Quelle: docker.io)
3 April 2016InstitutVermessung undGeoinformation 12
Standardisierung: Container als ISO Standard
3 April 2016InstitutVermessung undGeoinformation 13
Standardisierung mit Containern (nach ca. 1950)
(Quelle: docker.io)
3 April 2016InstitutVermessung undGeoinformation 14
Standardisierung von (Web-)Services als Container: Docker!
(Quelle: docker.io)
3 April 2016InstitutVermessung undGeoinformation 15
Weshalb Docker ?
• Immer mehr Software-Entwickler setzen bei der täglichen Arbeit auf virtuelle
Maschinen in denen sie einen Server replizieren, der dann auch auf dem
Produktivsystem zum Einsatz kommt.
• Docker ermöglicht, Anwendungen in sogenannten Containern auszuführen.
• Diese Container können aufeinander aufbauen und miteinander
kommunizieren… z.B. Datenbank / Webserver / …
Unterschied zu normalen virtuellen Maschinen:
• Nicht jeder Container muss ein komplettes Betriebssystem mitbringen!
• Container-basierte Virtualisierung isoliert Applikationen auf einem
gemeinsamen Betriebssystem voneinander, um die Auslieferung von
Anwendungen zu standardisieren.
3 April 2016InstitutVermessung undGeoinformation 16
Weshalb Docker ???
Das Anwendungsgebietvon Docker ist sehr gross. Ich benutze Docker primär für
die Softwareentwicklung (Webservices) und dessen Deployment ->DevOps
Vorteile:
• Jede Entwicklerin, jeder Entwickler hat dieselbe Umgebung. Die Aussage “läuft im
Moment nur auf meinem Laptop” gibt es nicht mehr.
• Das Betriebssystem während der Entwicklung ist auch dieselbe wie beim Deployment
• Einfacher Einstieg für neue Entwickerinnen und Entwickler. Alle haben exakt dieselbe
Umgebung. Die Installation der ist völlig automatisiert! Ideal für Continous
Integration.
• Schreiben von Tests ist für alle einfacher, alle haben sowieso dieselben Daten,
Testdatenbanken etc. installiert.
• github ?: Keine Images von virtuellen Maschinen müssen eingechecked werden,
sondern nur dessen Beschreibung (Dockerfile), also ideal für Versionsverwaltungen.
3 April 2016InstitutVermessung undGeoinformation 17
Virtuelle Maschinen vs. Docker
“Docker creates a common
framework for developers and
sysadmins to work together on
distributed applications”
http://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-normal-virtual-machine
3 April 2016InstitutVermessung undGeoinformation 18
Installation (a. Windows)
Siehe auch: https://docs.docker.com/engine/installation/windows/
Geht nur mit 64 bit Windows, ab Windows 7.
Hyper-V muss deaktiviert sein (ab Windows 8)
• Windows-Key + X
• Programme und Features (ganz oben) wählen
• Windows-Features aktivieren oder deaktivieren
• Hyper-V abwählen
• Nach Deaktivierung ist ein Neustart erforderlich…
Dann kann die Docker Toolbox installiert werden:
https://www.docker.com/products/docker-toolbox
Danach kann das Docker Terminal gestartet werden.
3 April 2016InstitutVermessung undGeoinformation 19
Installation (b. MacOS X)
Siehe auch: https://docs.docker.com/engine/installation/mac/
OSX ab Version 10.8 (Mountain Lion) wird benötigt.
Der Installer ist auf https://www.docker.com/products/docker-toolbox zu finden.
3 April 2016InstitutVermessung undGeoinformation 20
Installation (c. Linux)
Auch bei Linux geht es nur mit 64-bit, und Kernel ab Version 3.10
Genaue Instruktionen siehe: https://docs.docker.com/engine/installation/linux/
(für verschiedene Linux Distributionen)
3 April 2016InstitutVermessung undGeoinformation 21
Unterschied Linux <-> Windows / Mac
docker-machine ip defaultlocalhost
3 April 2016InstitutVermessung undGeoinformation 22
Docker benutzen
Zunächstöffnen wir das Docker Quickstart Terminal:
3 April 2016InstitutVermessung undGeoinformation 23
Erstellen eines Dockerfiles
vim Dockerfile
# Ausgehend vom image Ubuntu 14.04
FROM ubuntu:14.04
MAINTAINER Vorname Nachname email@email.com
# Image aktualisieren
RUN apt-get update --yes
# Applikation ausführen
CMD echo 'hello world'
docker build -t mchristen/myapp .
3 April 2016InstitutVermessung undGeoinformation 24
docker images # Anzeigen aller Images
docker ps -a
docker run mchristen/myapp
3 April 2016InstitutVermessung undGeoinformation 25
Und nun Python…
Wir erstellen ein neues Dockerfile, bei dem wir Python3 installieren:
# Ausgehend vom image Ubuntu 14.04
FROM ubuntu:14.04
MAINTAINER Vorname Nachname email@email.com
# Image aktualisieren
RUN apt-get update --yes
# Python installieren
RUN apt-get install -y python3-pip
docker build -t mchristen/python3 .
3 April 2016InstitutVermessung undGeoinformation 26
Python Programm ausführen
print('Hello World! This is Python3')
test.py
docker run –i mchristen/python3 python3 < test.py
3 April 2016InstitutVermessung undGeoinformation 27
Webservice z.B. mit Flask
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from Docker and Flask'
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0', port=3000)
demo.py
Dieses einfache Flask-App läuft auf port 3000
Wir verwenden dazu auch Ubuntu 14.04 und erstellen folgendes Dockerfile:
3 April 2016InstitutVermessung undGeoinformation 28
Dockerfile
# Ausgehend vom image Ubuntu 14.04
FROM ubuntu:14.04
MAINTAINER Vorname Nachname email@email.com
# Image aktualisieren
RUN apt-get update --yes
# Python installieren
RUN apt-get install -y python3-pip
# Flask installieren:
RUN pip3 install flask
# Port freigeben
EXPOSE 3000
# Python (Flask) app hinzufügen
ADD demo.py /root/demo.py
# Demo ausführen
CMD python3 /root/demo.py
WORKDIR /app
WORKDIR /app
3 April 2016InstitutVermessung undGeoinformation 29
Docker image erstellen und App ausführen
docker build -t mchristen/flaskapp .
docker run –p 3000:3000 mchristen/flaskapp
docker run –p 80:3000
beenden:
docker stop CONTAINERID
Die Container id erhält man übrigens mittels docker ps
3 April 2016InstitutVermessung undGeoinformation 30
Webservice
3 April 2016InstitutVermessung undGeoinformation 31
Wichtige Docker Commands
docker pull ubuntu:latest
docker images
docker ps # laufende container anzeigen
docker ps –a # alle container anzeigen
docker rmi IMAGETAG # Löschen image
docker rm CONTAINERID # Löschen container
docker rm $(docker ps -a -q) # Löschen aller container
docker pull ubuntu # image holen
# bash starten:
docker run -i -t --entrypoint /bin/bash mchristen/python3
docker-machine restart default
3 April 2016InstitutVermessung undGeoinformation 32
Docker in PyCharm
Ab PyCharm 5 (Professional Edition):
https://blog.jetbrains.com/pycharm/2015/12/using-docker-in-pycharm/
3 April 2016InstitutVermessung undGeoinformation 33
Fazit
• Docker und die API (Konsolenkommandos & Python-API) wurden vorgestellt
• Docker eignet sich hervorragend zur Entwicklung von Webservices
• Mit Python haben alle Entwickler dieselben Modul-Versionen.Installation der
Module ist komplett automatisiert, egal mit welchem Host-Betriebssystem
gearbeitet wird.
• Gerade “schwierig zu installierende” Module wie z.B. OpenCV für Python 3.5
funktioniert damit von allen Betriebssystemen aus
• Mit Entwicklungsumgebungen wie z.B. PyCharm kann das direkt auf der
Docker-Maschine debugged/ausgeführtwerden.
• Testing / Continuous Integration ist viel einfacher zu koordinieren.
3 April 2016InstitutVermessung undGeoinformation 34
22-24. Juni 2016 (21. Juni: Codesprint) near Basel, Switzerland
www.geopython.net
#GeoPythonConf
3 April 2016InstitutVermessung undGeoinformation 35
Fragen

Weitere ähnliche Inhalte

ODP
Ausfallsichere Kultur mit Plone
PDF
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
PDF
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
PDF
docker.io - Secure And Portable Containers Made Easy
PDF
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
PDF
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
PDF
Vagrant - Einführung & Verwendung
PDF
SLAC 2008 RPMs selber bauen
Ausfallsichere Kultur mit Plone
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
docker.io - Secure And Portable Containers Made Easy
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
Vagrant - Einführung & Verwendung
SLAC 2008 RPMs selber bauen

Was ist angesagt? (20)

PDF
Git Grundlagen
PPTX
Tipps und Tricks im Umgang mit Docker
PDF
Einführung in Git
PDF
Einführung in Docker
PPTX
Vagrant, Puppet, Docker für Entwickler und Architekten
PDF
Der WordPress Wolpertinger
PDF
Docker Entwicklungsumgebung für TYPO3 mit xdebug
PDF
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
PDF
Ausrollen von Multi-Tier-Applikationen mit Docker
PDF
Git vs SVN - Eine vergleichende Einführung
PDF
Docker Workbench
PDF
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
PDF
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
PDF
Infracoders Graz, smartOS - vom Netzwerk in der Box - zum Software Cloud Stack
PDF
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
PDF
Docker - Automatisches Deployment für Linux-Instanzen
PDF
systemd & Docker
PDF
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
PDF
Docker Einführung @GPN15
PDF
git - eine praktische Einführung
Git Grundlagen
Tipps und Tricks im Umgang mit Docker
Einführung in Git
Einführung in Docker
Vagrant, Puppet, Docker für Entwickler und Architekten
Der WordPress Wolpertinger
Docker Entwicklungsumgebung für TYPO3 mit xdebug
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Ausrollen von Multi-Tier-Applikationen mit Docker
Git vs SVN - Eine vergleichende Einführung
Docker Workbench
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Infracoders Graz, smartOS - vom Netzwerk in der Box - zum Software Cloud Stack
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Docker - Automatisches Deployment für Linux-Instanzen
systemd & Docker
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Docker Einführung @GPN15
git - eine praktische Einführung
Anzeige

Andere mochten auch (17)

PDF
Presentation final 72
PDF
Gettiing Started with IoT using Raspberry Pi and Python
PDF
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
PDF
Docker perl build
PDF
Visualising Basic Concepts of Docker
PDF
Docker by Example - Basics
PPTX
The Dementias- New Biology, Public Health Applications
PDF
Scott orr and-burgess_doing_well_by_doing_good_v5
PDF
RAFT - IEEE GOLD Volunteer Information Evening Nov 2013
PPTX
Development and evaluation of a mobile phone app intervention targeting sleep...
PPTX
Bitácora electrónica o blog
PDF
Коттеджный комплекс "5 звезд"
PPTX
Making stone soup: The many faces and eventual solutions to low health litera...
PDF
Voordelig onder de zonnebank in Alphen aan den Rijn | Zonnestudio Voordeel Zon
PPTX
Pengertian administrasi
PPTX
арга зүйн шинэчлэлд
PPTX
My Visual Artworks from High School
Presentation final 72
Gettiing Started with IoT using Raspberry Pi and Python
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Docker perl build
Visualising Basic Concepts of Docker
Docker by Example - Basics
The Dementias- New Biology, Public Health Applications
Scott orr and-burgess_doing_well_by_doing_good_v5
RAFT - IEEE GOLD Volunteer Information Evening Nov 2013
Development and evaluation of a mobile phone app intervention targeting sleep...
Bitácora electrónica o blog
Коттеджный комплекс "5 звезд"
Making stone soup: The many faces and eventual solutions to low health litera...
Voordelig onder de zonnebank in Alphen aan den Rijn | Zonnestudio Voordeel Zon
Pengertian administrasi
арга зүйн шинэчлэлд
My Visual Artworks from High School
Anzeige

Mehr von Martin Christen (12)

PDF
Opening Session GeoPython & Python Machine Learning Conference
PDF
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
PPTX
Lightning Talk GeoBeer #25
PDF
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
PDF
Teaching with JupyterHub - lessons learned
PDF
Mixed Reality Anwendungen mit 3D-Stadtmodellen
PDF
3D Computer Graphics with Python
PPTX
OpenStreetMap in 3D using Python
PPTX
3d mit Python (PythonCamp)
PDF
Webilea: The OpenWebGlobe Project
PDF
OpenWebGlobe - GeoSharing Bern
PDF
GeoBeer July 3rd, 2013
Opening Session GeoPython & Python Machine Learning Conference
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
Lightning Talk GeoBeer #25
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
Teaching with JupyterHub - lessons learned
Mixed Reality Anwendungen mit 3D-Stadtmodellen
3D Computer Graphics with Python
OpenStreetMap in 3D using Python
3d mit Python (PythonCamp)
Webilea: The OpenWebGlobe Project
OpenWebGlobe - GeoSharing Bern
GeoBeer July 3rd, 2013

Docker for Python Development

  • 1. Martin Christen FHNW – Fachhochschule Nordwestschweiz Hochschule für Architektur, Bau und Geomatik Institut Vermessung und Geoinformation martin.christen@fhnw.ch @MartinChristen Einführung zu Docker für Python-Entwicklung +
  • 2. 3 April 2016InstitutVermessung undGeoinformation 2 Kurzvorstellung Martin Christen Dozent für Geoinformatik und 3D-Computergrafik FHNW - Fachhochschule Nordwestschweiz Hochschule für Architektur, Bau und Geomatik Institut Vermessung und Geoinformation Lehrtätigkeit – Python-Programmierung (1. – 3. Semester) – Web-Technologien (1. Semester) – Geoinformatik (5. Semester) – Geoprocessing mit Python (Master-Studiengang) – 3D-Computergrafik (Master-Studiengang) Primäre Forschungsinteressen – 3D-Computergrafik als Webservice (insb. Bildverarbeitung/Ray-Tracing) – Large-Scale 3D-Rendering – Big Data & (Geo-)Datenprozessierung @MartinChristen GitHub: MartinChristen
  • 3. 3 April 2016InstitutVermessung undGeoinformation 3 Ausgangslage:OpenWebGlobe Projekt
  • 4. 3 April 2016InstitutVermessung undGeoinformation 4 Motivation: 3D-Streaming im Webbrowser MapData © OpenStreetMapcontributors BTh Hürbi/Daetwyler,MTh Lucas Oertli,2013
  • 5. 3 April 2016InstitutVermessung undGeoinformation 5 90 CityGML files (2.72 GB) 26'474 textures (1024x1024), unkomprimierte Grösse ca. 77 GB Orthophoto unkomprimiert ca. 430 GB
  • 6. 3 April 2016InstitutVermessung undGeoinformation 6 OpenStreetMap 3D – 3dmap Quelle: BTh, Daniel Rettenmund 2015
  • 7. 3 April 2016InstitutVermessung undGeoinformation 7 App: unsichtbares sichtbar machen (Römerstadt Augusta Raurica)
  • 8. 3 April 2016InstitutVermessung undGeoinformation 8 Geodatenprozessierung Web Viewer • HTML5, WebGL, JavaScript Data Processing & Storage/Cache • Python • JavaScript (node.js) • C++ • Optimal im HPCC Raw data
  • 9. 3 April 2016InstitutVermessung undGeoinformation 9 Geodatenprozessierung Web Viewer • HTML5, WebGL, JavaScript Data Processing & Storage/Cache • Python • JavaScript (node.js) • C++ • Optimal im HPCC Raw data Neue Entwicklerin/neuer Entwickler im Team ? -> Wo beginnen ??? Wie kann ich Entwicklungsumgebung aufsetzen ?? Fehler finden ? Testen ? ...
  • 10. 3 April 2016InstitutVermessung undGeoinformation 10 Problematik bei Web-Services (Quelle: docker.io)
  • 11. 3 April 2016InstitutVermessung undGeoinformation 11 Eine Analogie: Transport von Gütern vor ca. 1950: (Quelle: docker.io)
  • 12. 3 April 2016InstitutVermessung undGeoinformation 12 Standardisierung: Container als ISO Standard
  • 13. 3 April 2016InstitutVermessung undGeoinformation 13 Standardisierung mit Containern (nach ca. 1950) (Quelle: docker.io)
  • 14. 3 April 2016InstitutVermessung undGeoinformation 14 Standardisierung von (Web-)Services als Container: Docker! (Quelle: docker.io)
  • 15. 3 April 2016InstitutVermessung undGeoinformation 15 Weshalb Docker ? • Immer mehr Software-Entwickler setzen bei der täglichen Arbeit auf virtuelle Maschinen in denen sie einen Server replizieren, der dann auch auf dem Produktivsystem zum Einsatz kommt. • Docker ermöglicht, Anwendungen in sogenannten Containern auszuführen. • Diese Container können aufeinander aufbauen und miteinander kommunizieren… z.B. Datenbank / Webserver / … Unterschied zu normalen virtuellen Maschinen: • Nicht jeder Container muss ein komplettes Betriebssystem mitbringen! • Container-basierte Virtualisierung isoliert Applikationen auf einem gemeinsamen Betriebssystem voneinander, um die Auslieferung von Anwendungen zu standardisieren.
  • 16. 3 April 2016InstitutVermessung undGeoinformation 16 Weshalb Docker ??? Das Anwendungsgebietvon Docker ist sehr gross. Ich benutze Docker primär für die Softwareentwicklung (Webservices) und dessen Deployment ->DevOps Vorteile: • Jede Entwicklerin, jeder Entwickler hat dieselbe Umgebung. Die Aussage “läuft im Moment nur auf meinem Laptop” gibt es nicht mehr. • Das Betriebssystem während der Entwicklung ist auch dieselbe wie beim Deployment • Einfacher Einstieg für neue Entwickerinnen und Entwickler. Alle haben exakt dieselbe Umgebung. Die Installation der ist völlig automatisiert! Ideal für Continous Integration. • Schreiben von Tests ist für alle einfacher, alle haben sowieso dieselben Daten, Testdatenbanken etc. installiert. • github ?: Keine Images von virtuellen Maschinen müssen eingechecked werden, sondern nur dessen Beschreibung (Dockerfile), also ideal für Versionsverwaltungen.
  • 17. 3 April 2016InstitutVermessung undGeoinformation 17 Virtuelle Maschinen vs. Docker “Docker creates a common framework for developers and sysadmins to work together on distributed applications” http://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-normal-virtual-machine
  • 18. 3 April 2016InstitutVermessung undGeoinformation 18 Installation (a. Windows) Siehe auch: https://docs.docker.com/engine/installation/windows/ Geht nur mit 64 bit Windows, ab Windows 7. Hyper-V muss deaktiviert sein (ab Windows 8) • Windows-Key + X • Programme und Features (ganz oben) wählen • Windows-Features aktivieren oder deaktivieren • Hyper-V abwählen • Nach Deaktivierung ist ein Neustart erforderlich… Dann kann die Docker Toolbox installiert werden: https://www.docker.com/products/docker-toolbox Danach kann das Docker Terminal gestartet werden.
  • 19. 3 April 2016InstitutVermessung undGeoinformation 19 Installation (b. MacOS X) Siehe auch: https://docs.docker.com/engine/installation/mac/ OSX ab Version 10.8 (Mountain Lion) wird benötigt. Der Installer ist auf https://www.docker.com/products/docker-toolbox zu finden.
  • 20. 3 April 2016InstitutVermessung undGeoinformation 20 Installation (c. Linux) Auch bei Linux geht es nur mit 64-bit, und Kernel ab Version 3.10 Genaue Instruktionen siehe: https://docs.docker.com/engine/installation/linux/ (für verschiedene Linux Distributionen)
  • 21. 3 April 2016InstitutVermessung undGeoinformation 21 Unterschied Linux <-> Windows / Mac docker-machine ip defaultlocalhost
  • 22. 3 April 2016InstitutVermessung undGeoinformation 22 Docker benutzen Zunächstöffnen wir das Docker Quickstart Terminal:
  • 23. 3 April 2016InstitutVermessung undGeoinformation 23 Erstellen eines Dockerfiles vim Dockerfile # Ausgehend vom image Ubuntu 14.04 FROM ubuntu:14.04 MAINTAINER Vorname Nachname email@email.com # Image aktualisieren RUN apt-get update --yes # Applikation ausführen CMD echo 'hello world' docker build -t mchristen/myapp .
  • 24. 3 April 2016InstitutVermessung undGeoinformation 24 docker images # Anzeigen aller Images docker ps -a docker run mchristen/myapp
  • 25. 3 April 2016InstitutVermessung undGeoinformation 25 Und nun Python… Wir erstellen ein neues Dockerfile, bei dem wir Python3 installieren: # Ausgehend vom image Ubuntu 14.04 FROM ubuntu:14.04 MAINTAINER Vorname Nachname email@email.com # Image aktualisieren RUN apt-get update --yes # Python installieren RUN apt-get install -y python3-pip docker build -t mchristen/python3 .
  • 26. 3 April 2016InstitutVermessung undGeoinformation 26 Python Programm ausführen print('Hello World! This is Python3') test.py docker run –i mchristen/python3 python3 < test.py
  • 27. 3 April 2016InstitutVermessung undGeoinformation 27 Webservice z.B. mit Flask from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello from Docker and Flask' if __name__ == '__main__': app.run(debug=True,host='0.0.0.0', port=3000) demo.py Dieses einfache Flask-App läuft auf port 3000 Wir verwenden dazu auch Ubuntu 14.04 und erstellen folgendes Dockerfile:
  • 28. 3 April 2016InstitutVermessung undGeoinformation 28 Dockerfile # Ausgehend vom image Ubuntu 14.04 FROM ubuntu:14.04 MAINTAINER Vorname Nachname email@email.com # Image aktualisieren RUN apt-get update --yes # Python installieren RUN apt-get install -y python3-pip # Flask installieren: RUN pip3 install flask # Port freigeben EXPOSE 3000 # Python (Flask) app hinzufügen ADD demo.py /root/demo.py # Demo ausführen CMD python3 /root/demo.py WORKDIR /app WORKDIR /app
  • 29. 3 April 2016InstitutVermessung undGeoinformation 29 Docker image erstellen und App ausführen docker build -t mchristen/flaskapp . docker run –p 3000:3000 mchristen/flaskapp docker run –p 80:3000 beenden: docker stop CONTAINERID Die Container id erhält man übrigens mittels docker ps
  • 30. 3 April 2016InstitutVermessung undGeoinformation 30 Webservice
  • 31. 3 April 2016InstitutVermessung undGeoinformation 31 Wichtige Docker Commands docker pull ubuntu:latest docker images docker ps # laufende container anzeigen docker ps –a # alle container anzeigen docker rmi IMAGETAG # Löschen image docker rm CONTAINERID # Löschen container docker rm $(docker ps -a -q) # Löschen aller container docker pull ubuntu # image holen # bash starten: docker run -i -t --entrypoint /bin/bash mchristen/python3 docker-machine restart default
  • 32. 3 April 2016InstitutVermessung undGeoinformation 32 Docker in PyCharm Ab PyCharm 5 (Professional Edition): https://blog.jetbrains.com/pycharm/2015/12/using-docker-in-pycharm/
  • 33. 3 April 2016InstitutVermessung undGeoinformation 33 Fazit • Docker und die API (Konsolenkommandos & Python-API) wurden vorgestellt • Docker eignet sich hervorragend zur Entwicklung von Webservices • Mit Python haben alle Entwickler dieselben Modul-Versionen.Installation der Module ist komplett automatisiert, egal mit welchem Host-Betriebssystem gearbeitet wird. • Gerade “schwierig zu installierende” Module wie z.B. OpenCV für Python 3.5 funktioniert damit von allen Betriebssystemen aus • Mit Entwicklungsumgebungen wie z.B. PyCharm kann das direkt auf der Docker-Maschine debugged/ausgeführtwerden. • Testing / Continuous Integration ist viel einfacher zu koordinieren.
  • 34. 3 April 2016InstitutVermessung undGeoinformation 34 22-24. Juni 2016 (21. Juni: Codesprint) near Basel, Switzerland www.geopython.net #GeoPythonConf
  • 35. 3 April 2016InstitutVermessung undGeoinformation 35 Fragen