Docker for Python Development

Martin Christen
Martin ChristenProfessor of Geoinformatics and Computer Graphics um University of Applied Sciences and Arts Northwestern Switzerland
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
1 von 35

Recomendados

Ausfallsichere Kultur mit Plone von
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneJens Klein
1.3K views33 Folien
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange von
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas LangeOSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas LangeNETWAYS
40 views51 Folien
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant von
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantChristoph Möller
2K views59 Folien
Atom Publishing Protocol von
Atom Publishing ProtocolAtom Publishing Protocol
Atom Publishing ProtocolDirk Haun
609 views30 Folien
docker.io - Secure And Portable Containers Made Easy von
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easyinovex GmbH
2.1K views38 Folien
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali... von
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
1.2K views20 Folien

Más contenido relacionado

Was ist angesagt?

SLAC 2008 RPMs selber bauen von
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSchlomo Schapiro
1K views26 Folien
Git Grundlagen von
Git GrundlagenGit Grundlagen
Git GrundlagenBenjamin Schürmann
5.1K views26 Folien
Tipps und Tricks im Umgang mit Docker von
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerNicholas Dille
546 views21 Folien
Einführung in Git von
Einführung in GitEinführung in Git
Einführung in Gitandreaswo
3.4K views37 Folien
Einführung in Docker von
Einführung in DockerEinführung in Docker
Einführung in DockerChristian Colbach
109 views32 Folien
Vagrant, Puppet, Docker für Entwickler und Architekten von
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
3.9K views66 Folien

Was ist angesagt?(20)

Tipps und Tricks im Umgang mit Docker von Nicholas Dille
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit Docker
Nicholas Dille546 views
Einführung in Git von andreaswo
Einführung in GitEinführung in Git
Einführung in Git
andreaswo3.4K views
Der WordPress Wolpertinger von frankstaude
Der WordPress WolpertingerDer WordPress Wolpertinger
Der WordPress Wolpertinger
frankstaude1.2K views
Docker Entwicklungsumgebung für TYPO3 mit xdebug von Alexander Bohndorf
Docker Entwicklungsumgebung für TYPO3 mit xdebugDocker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebug
Alexander Bohndorf6.2K views
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa... von B1 Systems GmbH
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
B1 Systems GmbH266 views
Ausrollen von Multi-Tier-Applikationen mit Docker von B1 Systems GmbH
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
B1 Systems GmbH246 views
Git vs SVN - Eine vergleichende Einführung von Mario Müller
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende Einführung
Mario Müller97K views
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH von agilemethoden
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
agilemethoden1.8K views
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS von Peter Löwe
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Peter Löwe4.1K views
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen von Nicholas Dille
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Nicholas Dille442 views
Docker - Automatisches Deployment für Linux-Instanzen von B1 Systems GmbH
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
B1 Systems GmbH1.8K views
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg) von Michael Whittaker
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Michael Whittaker5.9K views
Docker Einführung @GPN15 von m1no
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
m1no2.5K views

Destacado

Presentation final 72 von
Presentation final 72Presentation final 72
Presentation final 72Martin Christen
541 views26 Folien
Gettiing Started with IoT using Raspberry Pi and Python von
Gettiing Started with IoT using Raspberry Pi and PythonGettiing Started with IoT using Raspberry Pi and Python
Gettiing Started with IoT using Raspberry Pi and PythonMartin Christen
1.1K views14 Folien
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas... von
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...Martin Christen
5K views25 Folien
Docker perl build von
Docker perl buildDocker perl build
Docker perl buildWorkhorse Computing
3.3K views57 Folien
Visualising Basic Concepts of Docker von
Visualising Basic Concepts of Docker Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker vishnu rao
1.1K views43 Folien
Docker by Example - Basics von
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics CodeOps Technologies LLP
1.8K views73 Folien

Destacado(17)

Gettiing Started with IoT using Raspberry Pi and Python von Martin Christen
Gettiing Started with IoT using Raspberry Pi and PythonGettiing Started with IoT using Raspberry Pi and Python
Gettiing Started with IoT using Raspberry Pi and Python
Martin Christen1.1K views
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas... von Martin Christen
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Martin Christen5K views
Visualising Basic Concepts of Docker von vishnu rao
Visualising Basic Concepts of Docker Visualising Basic Concepts of Docker
Visualising Basic Concepts of Docker
vishnu rao1.1K views
The Dementias- New Biology, Public Health Applications von ColumbiaPublicHealth
The Dementias- New Biology, Public Health ApplicationsThe Dementias- New Biology, Public Health Applications
The Dementias- New Biology, Public Health Applications
RAFT - IEEE GOLD Volunteer Information Evening Nov 2013 von IEEE SCV YP
RAFT - IEEE GOLD Volunteer Information Evening Nov 2013RAFT - IEEE GOLD Volunteer Information Evening Nov 2013
RAFT - IEEE GOLD Volunteer Information Evening Nov 2013
IEEE SCV YP770 views
Bitácora electrónica o blog von Erick Mero
Bitácora electrónica o blogBitácora electrónica o blog
Bitácora electrónica o blog
Erick Mero257 views
Voordelig onder de zonnebank in Alphen aan den Rijn | Zonnestudio Voordeel Zon von voordeelzon
Voordelig onder de zonnebank in Alphen aan den Rijn | Zonnestudio Voordeel ZonVoordelig onder de zonnebank in Alphen aan den Rijn | Zonnestudio Voordeel Zon
Voordelig onder de zonnebank in Alphen aan den Rijn | Zonnestudio Voordeel Zon
voordeelzon569 views
арга зүйн шинэчлэлд von tsluvsandorj
арга зүйн шинэчлэлдарга зүйн шинэчлэлд
арга зүйн шинэчлэлд
tsluvsandorj295 views
My Visual Artworks from High School von Sarah Liddemore
My Visual Artworks from High SchoolMy Visual Artworks from High School
My Visual Artworks from High School
Sarah Liddemore283 views

Similar a Docker for Python Development

Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur von
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
981 views38 Folien
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ... von
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Bernd Zuther
8K views5 Folien
Augmented Reality Workshop von
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshopargency
378 views42 Folien
Kubernetes von
KubernetesKubernetes
KubernetesMichael Frembs
125 views22 Folien
Lokale TYPO3 Entwicklungsumgebung mit DDEV von
Lokale TYPO3 Entwicklungsumgebung mit DDEVLokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEVPeter Kraume
3.2K views14 Folien
Was gibt es Neues im Docker-Universum von
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumNicholas Dille
748 views21 Folien

Similar a Docker for Python Development(20)

Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur von QAware GmbH
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
QAware GmbH981 views
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ... von Bernd Zuther
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Bernd Zuther8K views
Augmented Reality Workshop von argency
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshop
argency378 views
Lokale TYPO3 Entwicklungsumgebung mit DDEV von Peter Kraume
Lokale TYPO3 Entwicklungsumgebung mit DDEVLokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Peter Kraume3.2K views
Was gibt es Neues im Docker-Universum von Nicholas Dille
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
Nicholas Dille748 views
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra... von inovex GmbH
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
inovex GmbH800 views
TYPO3 Usergroup Dresden - TYPO3 & Composer von Axel Böswetter
TYPO3 Usergroup Dresden - TYPO3 & ComposerTYPO3 Usergroup Dresden - TYPO3 & Composer
TYPO3 Usergroup Dresden - TYPO3 & Composer
Axel Böswetter534 views
German: Softwareprodukte aus einem Source Code mit Javascript von Ralf Schwoebel
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
Ralf Schwoebel1.1K views
Cloud Native Computing von Aarno Aukia
Cloud Native ComputingCloud Native Computing
Cloud Native Computing
Aarno Aukia135 views
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer von NETWAYS
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer   OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
NETWAYS82 views
Mainframe-Zugriff via Java von Frank Rahn
Mainframe-Zugriff via JavaMainframe-Zugriff via Java
Mainframe-Zugriff via Java
Frank Rahn2K views
C / C++ Api for Beginners von Ulrich Krause
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
Ulrich Krause1.6K views
Ionic 2 - Hybridapps auf Steroiden von Hendrik Lösch
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
Hendrik Lösch506 views
C/ C++ for Notes & Domino Developers von Ulrich Krause
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
Ulrich Krause9.9K views

Más de Martin Christen

Opening Session GeoPython & Python Machine Learning Conference von
Opening Session GeoPython & Python Machine Learning Conference Opening Session GeoPython & Python Machine Learning Conference
Opening Session GeoPython & Python Machine Learning Conference Martin Christen
459 views14 Folien
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub von
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHubEuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHubMartin Christen
803 views42 Folien
Lightning Talk GeoBeer #25 von
Lightning Talk GeoBeer #25Lightning Talk GeoBeer #25
Lightning Talk GeoBeer #25Martin Christen
683 views8 Folien
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App... von
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...Martin Christen
379 views26 Folien
Teaching with JupyterHub - lessons learned von
Teaching with JupyterHub - lessons learnedTeaching with JupyterHub - lessons learned
Teaching with JupyterHub - lessons learnedMartin Christen
669 views22 Folien
Mixed Reality Anwendungen mit 3D-Stadtmodellen von
Mixed Reality Anwendungen mit 3D-StadtmodellenMixed Reality Anwendungen mit 3D-Stadtmodellen
Mixed Reality Anwendungen mit 3D-StadtmodellenMartin Christen
166 views24 Folien

Más de Martin Christen(11)

Opening Session GeoPython & Python Machine Learning Conference von Martin Christen
Opening Session GeoPython & Python Machine Learning Conference Opening Session GeoPython & Python Machine Learning Conference
Opening Session GeoPython & Python Machine Learning Conference
Martin Christen459 views
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub von Martin Christen
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHubEuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
Martin Christen803 views
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App... von Martin Christen
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
Martin Christen379 views
Teaching with JupyterHub - lessons learned von Martin Christen
Teaching with JupyterHub - lessons learnedTeaching with JupyterHub - lessons learned
Teaching with JupyterHub - lessons learned
Martin Christen669 views
Mixed Reality Anwendungen mit 3D-Stadtmodellen von Martin Christen
Mixed Reality Anwendungen mit 3D-StadtmodellenMixed Reality Anwendungen mit 3D-Stadtmodellen
Mixed Reality Anwendungen mit 3D-Stadtmodellen
Martin Christen166 views
3D Computer Graphics with Python von Martin Christen
3D Computer Graphics with Python3D Computer Graphics with Python
3D Computer Graphics with Python
Martin Christen7.6K views
OpenStreetMap in 3D using Python von Martin Christen
OpenStreetMap in 3D using PythonOpenStreetMap in 3D using Python
OpenStreetMap in 3D using Python
Martin Christen7.1K views

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