- Secure and portable containers made easy ?· 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-)…

  • Published on
    04-Jun-2018

  • View
    212

  • Download
    0

Transcript

  • docker.io

    Secure And PortableContainers Made Easy

    Jrgen BrunkMnchen, 30.04.2014

  • 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

  • Was ist Docker ?

  • 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

  • Was sind Container ?

  • docker.io 6

    Was sind Container ?

    Operating systemlevel virtualization:z.B. jails, openvz, lxc, ...

    Abgeschottete Teilmenge des Hostsystems(getrennter Process-, Netzwerk-, I/O-Raum)

    Quasi chroot on Steroids

  • docker.io 7

    Container vs. VMs

  • Warum Docker ?

  • docker.io 9

    Warum Docker? (The Matrix from Hell)

  • docker.io 10

    Vorteile fr DEV

    Einmal gebaut luft berall !

    Saubere, sichere, portable Laufzeitumgebung fr die Application

    Kein Problem mit Dependencies, Paketen etc. whrend des Deployments

    Jede Application ist ein isolierter Container mit ggf. unterschiedlichen SW-Versionen

  • docker.io 11

    Vorteile fr OPS

    Einmal konfiguriert luft berall !

    Keine Inkonsistenzen mehr zwischen Dev-, QA-, Stage-, Prod-Umgebung

    Schnelleres Deployment (continuous deployment / continuous integration)

    Schlanke Container bessere Performance als VM's

  • docker.io 12

    Warum es funktioniert (Trennung der Zustndigkeiten)

    Entwickler:

    Kmmert sich um das was innerhalb des Containers ist:

    sein Code / Daten

    seine Libs / Frameworks

    sein Package Manager

    Alle Linux Server sehen gleich aus

    Admin:

    Kmmert sich um das was ausserhalb des Containers ist:

    Logging / Backup

    Remote Access

    Network Config

    Alle Container starten und stoppen gleich

  • ArchitekturArchitektur

  • docker.io 14

    Architektur

  • 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

  • docker.io 16

    portabel

    Luft auf jedem System das LXC untersttzt

    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*

  • docker.io 17

    autark

    Ein Docker Container enthlt alles ntige:

    Minimal Base OS (kein Kernel) Libraries / Frameworks

    Application Code + Data

    Ein Container kann berall da laufen wo auch Docker installiert werden kann

  • docker.io 18

    Docker Basics

  • Fragen soweit ?

  • Praxis

  • docker.io 21

    Praxis

    Wirbauen

    unsDocker

    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 --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 prfen$ sudo docker info$ sudo docker version

    # Docker Verzeichnis hier liegt alles$ sudo ls -l /var/lib/docker/

    # Docker Usage anzeigen lassen$ sudo docker

  • Ein einfaches Hello World Beispiel

  • 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

  • Grundlegende Docker Befehle

  • docker.io 27

    Grundlegende Docker Befehle

    docker search docker start | stop | kill | restart docker ps [-a]docker imagesdocker pull [:TAG]docker run [-i] []docker build | | -docker rm docker rmi docker save docker load

  • Dockerfile

  • docker.io 29

    Dockerfile

    # sshd## VERSION 0.0.1

    FROM ubuntuMAINTAINER Thatcher R. Peskens "thatcher@dotcloud.com"

    # 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

  • docker.io 30

    Container aus dem Dockerfile bauen

    # Dockerfile erzeugen (Inhalt siehe letzte Folie)$ vi Dockerfile

    # Docker Image bauen, temporre 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

  • 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

  • Container & Images transferieren

  • 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

  • Noch Fragen ?

  • Quellennachweise und Links

  • docker.io 36

    Quellennachweise

    Quellennachweise:

    www.docker.io

    Images:

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

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

    http://www.docker.io/http://www.jundiai.com.br/

  • 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

    Vielen Dank fr Ihre Aufmerksamkeit

    Kontakt

    Jrgen BrunkSystems Engineer

    inovex GmbHOffice MnchenValentin-Linhof Str. 2D-81829 Mnchen

    Mobil: 0173 3181 003Mail: juergen.brunk@inovex.de

    Folie 1AgendaFolie 3Folie 4Folie 5Folie 6Folie 7Folie 8Folie 9Folie 10Folie 11Folie 12Folie 13Folie 14Folie 15Folie 16Folie 17Folie 18Folie 19Folie 20Folie 21Folie 22Folie 23Folie 24Folie 25Folie 26Folie 27Folie 28Folie 29Folie 30Folie 31Folie 32Folie 33Folie 36Folie 37Vielen Dank fr Ihre Aufmerksamkeit

Recommended

View more >