Transcript
Page 1: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io

Secure And Portable

Containers Made Easy

Jürgen Brunk

München, 30.04.2014

Page 2: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 2

1.Was ist Docker ?2.Was sind Container ?3.Warum Docker ?4.Architektur5.Praxis6.Docker unter Ubuntu installieren7.Ein einfaches „Hello World“ Beispiel8.Grundlegende Docker Befehle9.Dockerfile10.Container & Images transferieren

Agenda

Page 3: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Was ist Docker ?

Page 4: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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

Page 5: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Was sind Container ?

Page 6: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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“

Page 7: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 7

Container vs. VMs

Page 8: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Warum Docker ?

Page 9: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 9

Warum Docker? (The Matrix from Hell)

Page 10: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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

Page 11: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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

Page 12: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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

Page 13: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

ArchitekturArchitektur

Page 14: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 14

Architektur

Page 15: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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

Page 16: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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*

Page 17: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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

Page 18: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 18

Docker Basics

Page 19: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Fragen soweit ?

Page 20: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Praxis

Page 21: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 21

Praxis

Wirbauen

unsDocker

Container

Page 22: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Docker unter Ubuntu installieren

Page 23: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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

Page 24: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Ein einfaches „Hello World“ Beispiel

Page 25: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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“

Page 26: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Grundlegende Docker Befehle

Page 27: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 27

Grundlegende Docker Befehle

docker search <TERM>docker start | stop | kill | restart <CID>docker ps [-a]docker imagesdocker pull <IMAGE>[:TAG]docker run [-i] <IMAGE> [<CMD>]docker build <PATH> | <URL> | -docker rm <CID>docker rmi <IMAGE>docker save <IMAGE>docker load

Page 28: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Dockerfile

Page 29: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 29

Dockerfile

# sshd## VERSION 0.0.1

FROM ubuntuMAINTAINER Thatcher R. Peskens "[email protected]"

# make sure the package repository is up to dateRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get update

RUN apt-get install -y openssh-serverRUN mkdir /var/run/sshd RUN echo 'root:screencast' |chpasswd

EXPOSE 22CMD /usr/sbin/sshd -D

Page 30: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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 imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEimg_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_sshdd25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c228f8

Page 31: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 31

SSH Connect in den Container

# Container auflisten$ sudo docker ps --no-trunc=trueCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c228f8 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 220.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

Page 32: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Container & Images transferieren

Page 33: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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.tarnewhost:$ 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_newsshdnewhost:$ sudo docker run -d -P --name ct_newsshd \ img_newsshd

Page 34: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Noch Fragen ?

Page 35: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

Quellennachweise und Links

Page 36: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

docker.io 36

Quellennachweise

Quellennachweise:

www.docker.io

Images:

www.docker.iowww.jundiai.com.brruhrnachrichten.de

gist.github.com/simota/9043141slides.com/stevenborrelli/docker

Page 37: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

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/

Page 38: docker.io - Secure and portable containers made easy · docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen,

38

Vielen Dank für Ihre Aufmerksamkeit

Kontakt

Jürgen BrunkSystems Engineer

inovex GmbHOffice MünchenValentin-Linhof Str. 2D-81829 München

Mobil: 0173 3181 003Mail: [email protected]


Recommended