Oliver Nautsch
-
selbständig - Nautsch GmbH, Zürich
Software Craftsman
-
Engineer, Coach, Architect, Trainer, Consultant, Gardener, …
-
Microservices, Open Source, TDD, DDD, CD, Virtualisierung, …
-
Java, ( JVM Sprachen ), …
email: [email protected]
twitter: @ollispieps
github: @ollin
google+: OliverNautsch
Familie, 2 Kinder
jug.ch Board Member seit 2014 / Präsident seit 2015
OSS an Schulen (ch/open),
( Hackergarten Zürich ),
( Coders Only Zürich ), …
. . . running . . .
-
Beispiel: virtualbox via Vagrant vs docker
-
Entwicklungs- und Buildumgebungen
-
Continous Integration / Continuous Delivery
-
Produktionsumgebungen
-
Mandantenfähigkeit
-
Server Konsolidierung
-
Applikationsisolierung
-
einfachere Konfiguration (immutable infrastructure)
-
. . .
-
Docker Hub ist eine Registry für Images
-
Docker Engine
-
Docker Daemon ( REST API )
-
Docker CLI
-
-
Image
-
Layers (wie git commits or changesets für ein Dateisystem)
-
ein Parent
-
r
-
-
Container
-
rw via Union File System
-
docker run --rm -i -t ubuntu:14.04.3 bash
root@35d2e9236656:/# exit
docker ps -a
-
docker - das CLI
-
run - erzeugt einen Container und startet ihn
-
--rm - entfernt den Container wieder, wenn er beendet wird
-
-i - interactive / STDIN bleibt offen
-
-t - Terminal
-
ubuntu:14.04.3 - [<location>/][<user>/]<name>[:<tag>]
-
Beispiele:
-
myrepo.nautsch.ch:12345/nautsch/myimage:1.0
-
ubuntu
-
-
-
bash - der auszuführende Befehl
docker run -t -i ubuntu:14.04.3 bash
root@dcde95ca3e5c:/# touch huschihops.txt
root@dcde95ca3e5c:/# exit
docker ps -a
docker commit -m="added huschihops.txt" -a="Oliver Nautsch" dcde95ca3e5c ollin/huschihops:1.0
FROM ubuntu:14.04.3
MAINTAINER Oliver Nautsch <[email protected]>
RUN touch huschihops.txt
docker build -t ollin/huschihops:1.0 .
Sending build context to Docker daemon 2.56 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:14.04.3
---> c4ff7513909d
Step 1 : MAINTAINER Oliver Nautsch <[email protected]>
---> Using cache
---> 98658a58fa03
Step 2 : RUN touch huschihops.txt
---> Running in 2d4d554cbf2a
---> 01ee073272ec
Removing intermediate container 2d4d554cbf2a
Successfully built 01ee073272ec
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ollin/huschihops 1.0 01ee073272ec 31 seconds ago 225.4 MB
. . .
docker inspect jenkins
. . . (Metainformationen ueber Image als JSON, u.a. ExposedPorts)
docker create -t -p 8080:8080 --name myjenkins1 jenkins # erzeuge job 'aaaa'
docker ps
docker start myjenkins1
docker ps
docker inspect myjenkins1
docker run -d -t -p 8081:8080 --name myjenkins2 jenkins # erzeuge job 'bbbb'
docker ps
docker rm -f myjenkins2 myjenkins1
-
erzeugen vs. starten
-
Ports von Container an Host herausgeben
-
docker rm und die Daten sind weg!
-
spezielle Verzeichnisse in einen oder mehreren Containern
-
geht am Union File System vorbei
-
Änderungen werden nicht berücksichtigt, wenn neues Image erzeugt wird
-
persistent bis kein Container sie mehr benutzt
docker run -d -t --name myjenkins3 -p 8083:8080 -v /home/ollin/docker_data/myjenkins3-home:/var/jenkins_home jenkins:latest
ls -al /home/ollin/docker_data/myjenkins3-home
docker stop myjenkins3 && docker rm myjenkins3
docker run -d -t --name myjenkins4 -p 8084:8080 -v /home/ollin/docker_data/myjenkins3-home:/var/jenkins_home jenkins:weekly
docker run --name myjenkins_data -v /var/jenkins_home tianon/true
docker run -d -t --name myjenkins5 -p 8085:8080 -u root --volumes-from="myjenkins_data" jenkins:latest
docker rm -f myjenkins5
docker run -d -t --name myjenkins6 -p 8086:8080 -u root --volumes-from="myjenkins_data" jenkins:weekly
-
Container, der nur ein oder mehrere Volumes definiert
-
Umgebungsvariablen
-
/etc/hosts
docker run -d -t -p 5000:5000 --name myregistry registry:0.9.1
curl http://localhost:5000
docker run -d -t -P --name myregistrygui --link myregistry:myregistry -e REG1=http://myregistry:5000/v1/ atcol/docker-registry-ui
docker exec -i -t myregistrygui bash
root@5baad6521a33:/tomcat7# env | sort
...
root@5baad6521a33:/tomcat7# cat /etc/hosts
...
-
internes Projekt bei dotCloud
-
September 2013 redhat Ankündigung ( OpenShift v3 )
-
Oktober 2013 dotCloud Inc. → Docker Inc.
-
Juni 2014 dockercon
-
keynodes from IBM, google, rackspace
-
-
Juli 2014 Windows Azure + Docker
-
Mid 2015 Docker Container Support for Windows Server
-
aktuell Version 1.8.1
-
2015-08-12 - 1.8 - Docker content trust, Docker toolbox, …
-
2015-06-22 - 1.7 - plugin system for engine, … (Orchestration updates, Swarm, Machine, Compose)
-
2015-04-16 - 1.6 - labels, windows client preview, logging drivers
-
2015-02-03 - 1.5 - read only file system, IPv6 zwischen Containern
-
2014-12-11 - 1.4 - stability
-
2014-10-16 - 1.3 - exec, create, signing
-
. . .
-
2014-06-09 - 1.0 - first stable version
-
. . .
-
2013-03-20 - first public version
-
-
14'000+ dockerisierte Applikationen (Stand Feb. 2015)
-
3200 forks Feb. 2015 / 6,300 forks Sept. 2015
-
Docker Swarm - Clustering, pool of containers into single, virtual host
-
Docker Toolbox - Run it on Windows and Mac
-
Docker Machine
-
Docker Compose
-
…
-
-
. . .
-
Docker - Java?
-
Ein Prozess und viele Anwendungen (JEE Modell) vs. viele Prozesse?
Vielen Dank für die Teilnahme!
Präsentation unter: https://github.com/ollin/pres-docker-dev-view
email: [email protected]
twitter: @ollispieps
-
Gibt es die Möglichkeit Applikationen mit graphischen Oberflächen mit Docker zu starten? Im Vortrag sind nur headless Applikationen gezeigt worden.
Ja, diese Möglichkeit gibt es tatsächlich. Hier ein Beispiel für Firefox und Netbeans: Running GUI apps with Docker by Fábio Rehm.