docker.io
Secure And Portable
Containers Made Easy
Jürgen Brunk
München, 30.04.2014
docker.io 2
1.Was ist Docker ?
2.Was sind Container ?
3.Warum Docker ?
4.Architektur
5.Praxis
6.Docker unter Ubuntu instal...
Was ist Docker ?
docker.io 4
Was ist Docker ?
Das Docker*
Framework erlaubt
es (Web-)
Applikationen in
schlanke, autarke
und portable
Umgeb...
Was sind
Container ?
docker.io 6
Was sind Container ?
Operating system–level virtualization:
z.B. jails, openvz, lxc, ...
Abgeschottete Teilmen...
docker.io 7
Container vs. VMs
Warum Docker ?
docker.io 9
Warum Docker? (The Matrix from Hell)
docker.io 10
Vorteile für DEV
Einmal gebaut – läuft überall !
Saubere, sichere, portable Laufzeitumgebung
für die Applicat...
docker.io 11
Vorteile für OPS
Einmal konfiguriert – läuft überall !
Keine Inkonsistenzen mehr zwischen Dev-,
QA-, Stage-, ...
docker.io 12
Warum es funktioniert (Trennung der Zuständigkeiten)
Entwickler:
Kümmert sich um das was
innerhalb des Contai...
ArchitekturArchitektur
docker.io 14
Architektur
docker.io 15
schlank
Docker* basiert auf Linux Containern LXC*
Minimaler Overhead (cpu/io/network)
Verwendet layered Files...
docker.io 16
portabel
Läuft auf jedem System das LXC unterstützt
Ubuntu, Debian*, RHEL, Gentoo, Google
Cloud, Rackspace Cl...
docker.io 17
autark
Ein Docker Container enthält alles nötige:
● Minimal Base OS (kein Kernel)
● Libraries / Frameworks
● ...
docker.io 18
Docker Basics
Fragen soweit ?
Praxis
docker.io 21
Praxis
Wir
bauen
uns
Docker
Container
Docker unter
Ubuntu installieren
docker.io 23
Docker unter Ubuntu installieren
# Docker unter Ubuntu 13.xx / 14.04 LTS installieren
$ sudo apt-key adv --ke...
Ein einfaches „Hello
World“ Beispiel
docker.io 25
Ein einfaches „Hello World“ Beispiel
# ein fertiges Image aus dem Docker Index ziehen
$ sudo docker pull ubun...
Grundlegende
Docker Befehle
docker.io 27
Grundlegende Docker Befehle
docker search <TERM>
docker start | stop | kill | restart <CID>
docker ps [-a]
do...
Dockerfile
docker.io 29
Dockerfile
# sshd
#
# VERSION 0.0.1
FROM ubuntu
MAINTAINER Thatcher R. Peskens "thatcher@dotcloud.com"
# make...
docker.io 30
Container aus dem Dockerfile bauen
# Dockerfile erzeugen (Inhalt siehe letzte Folie)
$ vi Dockerfile
# Docker...
docker.io 31
SSH Connect in den Container
# Container auflisten
$ sudo docker ps --no-trunc=true
CONTAINER ID IMAGE
COMMAN...
Container & Images
transferieren
docker.io 33
Container & Images transferieren
Docker Images:
$ sudo docker save img_sshd > save.tar
$ scp save.tar Dockerf...
Noch Fragen ?
Quellennachweise
und Links
docker.io 36
Quellennachweise
Quellennachweise:
www.docker.io
Images:
www.docker.io
www.jundiai.com.br
ruhrnachrichten.de
...
docker.io 37
Links
Links:
Docker Website:
http://www.docker.io/
Docker Dokumentation:
http://docs.docker.io/
Docker Comman...
38
Vielen Dank für Ihre Aufmerksamkeit
Kontakt
Jürgen Brunk
Systems Engineer
inovex GmbH
Office München
Valentin-Linhof St...
Nächste SlideShare
Wird geladen in …5
×

docker.io - Secure And Portable Containers Made Easy

916 Aufrufe

Veröffentlicht am

inovex interner Vortrag/Brownbag:

1.Was ist Docker ?
2.Was sind Container ?
3.Warum Docker ?
4.Architektur
5.Praxis
6.Docker unter Ubuntu installieren
7.Ein einfaches „Hello World“ Beispiel
8.Grundlegende Docker Befehle
9.Dockerfile
10.Container & Images transferieren

Veröffentlicht in: Software
2 Kommentare
1 Gefällt mir
Statistik
Notizen
Keine Downloads
Aufrufe
Aufrufe insgesamt
916
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
10
Aktionen
Geteilt
0
Downloads
22
Kommentare
2
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

docker.io - Secure And Portable Containers Made Easy

  1. 1. docker.io Secure And Portable Containers Made Easy Jürgen Brunk München, 30.04.2014
  2. 2. docker.io 2 1.Was ist Docker ? 2.Was sind Container ? 3.Warum Docker ? 4.Architektur 5.Praxis 6.Docker unter Ubuntu installieren 7.Ein einfaches „Hello World“ Beispiel 8.Grundlegende Docker Befehle 9.Dockerfile 10.Container & Images transferieren Agenda
  3. 3. Was ist Docker ?
  4. 4. docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen, sog. Container, zu verpacken *) engl. Hafenarbeiter
  5. 5. Was sind Container ?
  6. 6. docker.io 6 Was sind Container ? Operating system–level virtualization: z.B. jails, openvz, lxc, ... Abgeschottete Teilmenge des Hostsystems (getrennter Process-, Netzwerk-, I/O-Raum) Quasi „chroot on Steroids“
  7. 7. docker.io 7 Container vs. VMs
  8. 8. Warum Docker ?
  9. 9. docker.io 9 Warum Docker? (The Matrix from Hell)
  10. 10. docker.io 10 Vorteile für DEV Einmal gebaut – läuft überall ! Saubere, sichere, portable Laufzeitumgebung für die Application Kein Problem mit Dependencies, Paketen etc. während des Deployments Jede Application ist ein isolierter Container mit ggf. unterschiedlichen SW-Versionen
  11. 11. docker.io 11 Vorteile für OPS Einmal konfiguriert – läuft überall ! Keine Inkonsistenzen mehr zwischen Dev-, QA-, Stage-, Prod-Umgebung Schnelleres Deployment (continuous deployment / continuous integration) Schlanke Container – bessere Performance als VM's
  12. 12. docker.io 12 Warum es funktioniert (Trennung der Zuständigkeiten) Entwickler: Kümmert sich um das was innerhalb des Containers ist: ● sein Code / Daten ● seine Libs / Frameworks ● sein Package Manager Alle Linux Server sehen gleich aus Admin: Kümmert sich um das was ausserhalb des Containers ist: ● Logging / Backup ● Remote Access ● Network Config Alle Container starten und stoppen gleich
  13. 13. ArchitekturArchitektur
  14. 14. docker.io 14 Architektur
  15. 15. docker.io 15 schlank Docker* basiert auf Linux Containern LXC* Minimaler Overhead (cpu/io/network) Verwendet layered Filesystem *) Due to a bug in LXC, Docker works best on the 3.8 kernel
  16. 16. docker.io 16 portabel Läuft auf jedem System das LXC unterstützt Ubuntu, Debian*, RHEL, Gentoo, Google Cloud, Rackspace Cloud, Amazon EC2, IBM Softlayer, Arch Linux, FrugalWare, Fedora, openSUSE, CRUX Linux Microsoft Windows*, Apple OSX*, Raspberry PI*
  17. 17. docker.io 17 autark Ein Docker Container enthält alles nötige: ● Minimal Base OS (kein Kernel) ● Libraries / Frameworks ● Application Code + Data Ein Container kann überall da laufen wo auch Docker installiert werden kann
  18. 18. docker.io 18 Docker Basics
  19. 19. Fragen soweit ?
  20. 20. Praxis
  21. 21. docker.io 21 Praxis Wir bauen uns Docker Container
  22. 22. Docker unter Ubuntu installieren
  23. 23. docker.io 23 Docker unter Ubuntu installieren # Docker unter Ubuntu 13.xx / 14.04 LTS installieren $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install -y lxc-docker # Docker Installation prüfen $ sudo docker info $ sudo docker version # Docker Verzeichnis – hier liegt alles $ sudo ls -l /var/lib/docker/ # Docker Usage anzeigen lassen $ sudo docker
  24. 24. Ein einfaches „Hello World“ Beispiel
  25. 25. docker.io 25 Ein einfaches „Hello World“ Beispiel # ein fertiges Image aus dem Docker Index ziehen $ sudo docker pull ubuntu # alle lokalen Images auflisten $ sudo docker images # einen Container erzeugen, Applikation # „/bin/echo“ laufen lassen und am Ende den # Container wieder entfernen $ sudo docker run --rm ubuntu /bin/echo „Hello World“
  26. 26. Grundlegende Docker Befehle
  27. 27. docker.io 27 Grundlegende Docker Befehle docker search <TERM> docker start | stop | kill | restart <CID> docker ps [-a] docker images docker pull <IMAGE>[:TAG] docker run [-i] <IMAGE> [<CMD>] docker build <PATH> | <URL> | - docker rm <CID> docker rmi <IMAGE> docker save <IMAGE> docker load
  28. 28. Dockerfile
  29. 29. docker.io 29 Dockerfile # sshd # # VERSION 0.0.1 FROM ubuntu MAINTAINER Thatcher R. Peskens "thatcher@dotcloud.com" # make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update RUN apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:screencast' |chpasswd EXPOSE 22 CMD /usr/sbin/sshd -D
  30. 30. docker.io 30 Container aus dem Dockerfile bauen # Dockerfile erzeugen (Inhalt siehe letzte Folie) $ vi Dockerfile # Docker Image bauen, temporäre Zwischenbuilds am Ende verwerfen $ sudo docker build --rm -t img_sshd . # lokale Docker Images auflisten $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE img_sshd latest 9b8cbe62ff21 2 minutes ago 313.6 MB # neuen Container aus Image erzeugen und als Daemon starten $ sudo docker run -d -P --name ct_sshd img_sshd d25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c2 28f8
  31. 31. docker.io 31 SSH Connect in den Container # Container auflisten $ sudo docker ps --no-trunc=true CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c2 28f8 img_sshd:latest /bin/sh -c '/usr/sbin/sshd -D' 4 minutes ago Up 3 minutes 0.0.0.0:49153->22/tcp ct_sshd # Container → Host Port Mapping finden $ sudo docker port ct_sshd 22 0.0.0.0:49153 # SSH Connect via local Port forwarding (passwd = „screencast“) $ ssh -lroot -p49153 localhost # SSH Connect via Container IP $ sudo docker inspect ct_sshd | grep IPAddress
  32. 32. Container & Images transferieren
  33. 33. docker.io 33 Container & Images transferieren Docker Images: $ sudo docker save img_sshd > save.tar $ scp save.tar Dockerfile newhost: newhost:$ sudo docker load < save.tar newhost:$ sudo docker run -d -P --name ct_sshd img_sshd Docker Containers: $ sudo docker export ct_sshd > export.tar $ scp export.tar Dockerfile newhost: newhost:$ cat export.tar | sudo docker import - img_newsshd newhost:$ sudo docker run -d -P --name ct_newsshd img_newsshd
  34. 34. Noch Fragen ?
  35. 35. Quellennachweise und Links
  36. 36. docker.io 36 Quellennachweise Quellennachweise: www.docker.io Images: www.docker.io www.jundiai.com.br ruhrnachrichten.de gist.github.com/simota/9043141 slides.com/stevenborrelli/docker
  37. 37. docker.io 37 Links Links: Docker Website: http://www.docker.io/ Docker Dokumentation: http://docs.docker.io/ Docker Command Line Reference: http://docs.docker.io/reference/commandline/cli/ Lightweight Linux for Docker: http://boot2docker.io/
  38. 38. 38 Vielen Dank für Ihre Aufmerksamkeit Kontakt Jürgen Brunk Systems Engineer inovex GmbH Office München Valentin-Linhof Str. 2 D-81829 München Mobil: 0173 3181 003 Mail: juergen.brunk@inovex.de

×