Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann...

39
Docker Eine Einführung Andreas Hartmann 22.06.2017

Transcript of Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann...

Page 1: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

DockerEine Einführung

Andreas Hartmann

22.06.2017

Page 2: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

DockerAnwendungen portabel gestallten

Virtualisierung einer Anwendung mit allen Abhängigkeiten► Eingebaute Portabilität► Vereinfachte Verwaltung► Kostenreduktion in Entwicklung,

Test und Produktion

22.06.2017 Docker – Eine Einführung 2

Page 3: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Dev Ops in Entwicklung, Test & Produktion

22.06.2017 Docker – Eine Einführung 3

Entwicklung Unit Tests IntegrationsTests . . . Tests Produktion

Page 4: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Container versus VM

► schneller & sparsamer

22.06.2017 Docker – Eine Einführung 4

Page 5: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker KomponentenImage ► read-only► Blaupause für einen Container

Public/Private Registry► Sammlung von Images

22.06.2017 Docker – Eine Einführung 5

Container► read-write Schicht auf Images► Können gestartet und gestoppt

werden

Page 6: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ÖkosystemDocker Machine► Einrichtung eines Hosts für Docker-

Container, unabhängig davon ob es sich dabei um einen Laptop, Virtuelle Maschine oder Cloud-Instanz handelt

► Ausführung von beliebigen Docker-Befehle auf dem Host

22.06.2017 Docker – Eine Einführung 6

Page 7: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ÖkosystemDocker Compose► Verteilte Multi-Container-Anwendungen► Starten/Stoppen der Multi-Container

Applikation mit einem Kommando

22.06.2017 Docker – Eine Einführung 7

Page 8: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ÖkosystemDocker Swarm► Clustering für verteilte, “dockerisierte”

Anwendungen► Erstellung von Ressourcen-Pools aus

Hosts auf denen anschließend Docker-Container laufen

22.06.2017 Docker – Eine Einführung 8

Page 9: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ÖkosystemDocker Kitematic► GUI um

> vorhandene Container aufzulisten> neue Container zu erzeugen> Container Namen zu setzen> vorhandene Container zu löschen> Container zu starten/stoppen> Logfiles der Container anzuzeigen> Terminal in einem Container zu starten> Externe Ports eines Containers anzeigen

22.06.2017 Docker – Eine Einführung 9

Page 10: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker Brown BagDocker Machine► Docker Toolbox Installieren► Docker VM erzeugen► Starten | Stoppen► Zugriff auf die Docker VM

Host Directory Volumes► Mounten von Verzeichnisse auf dem Hostsystem

Registry für Docker-Images ► Public Registry - Docker Hub► Private Registry

22.06.2017 Docker – Eine Einführung 10

Page 11: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker Brown BagDocker Image► Erstellen► Verfügbare Images abrufen► In das lokale Repository laden

Container► Starten | Stoppen► Anhalten | neu Starten► Entfernen► Am Container vorgenommene Änderungen in das

zugehörige Image zurückschreiben

22.06.2017 Docker – Eine Einführung 11

Page 12: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker Brown BagContainer Linking

Data Volumes

Images und Container weitergeben

Docker in der Webentwicklung

Multi Container Applikationen – Docker Compose

Clustering – Docker Swarm

22.06.2017 Docker – Eine Einführung 12

Page 13: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker Toolbox installieren

https://www.docker.com/docker-toolbox

22.06.2017 Docker – Eine Einführung 13

Page 14: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker MachineInstallation überprüfen► docker-machine -v

Vorhandene Docker Hosts auflisten► docker-machine ls

Docker Host erzeugen► docker-machine create --driver virtualboxtest-host

22.06.2017 Docker – Eine Einführung 14

Page 15: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker MachineDocker Host starten► docker-machine starttest-host

Docker Host stoppen► docker-machine stoptest-host

Docker Host entfernen► docker-machine rmtest-host

22.06.2017 Docker – Eine Einführung 15

Zugriff auf den Docker Host mittels Console► docker-machine ssh test-host

Page 16: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Host Directory Volumes

► cd /c/Users/hartmann22.06.2017 Docker – Eine Einführung 16

Page 17: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Host Directory Volumes

► mkdir windows-share► sudo mount -t vboxsf share windows-share

22.06.2017 Docker – Eine Einführung 17

Page 18: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Registry für Docker-Images – Public RegistryAbrufen des Centos Images aus der Public Registry und ablegen in dem lokalen Repository► docker pull centos

Anzeigen der Images im lokalen Repository► docker images

Image aus dem lokalen Repository löschen► docker rmi -f <IMAGE>

Eigenes Image in die Public Registry hochladen► docker login► docker push yourname/newimage

22.06.2017 Docker – Eine Einführung 18

Page 19: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Registry für Docker-Images – Private Registry Abrufen des Docker Registry Images aus der Public Registry und ablegen in dem lokalen Repository► docker pull registry:2.1

Starten des Private Registry Containers► docker run –d -p 5000:5000 --name registry-server registry:2.1

Taggen eines Images in dem lokalen Repository und Hochladen in die Private Registry► docker tag centos:latest localhost:5000/mycentos-img:0.0.1► docker push localhost:5000/mycentos-img:0.0.1

22.06.2017 Docker – Eine Einführung 19

Page 20: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Registry für Docker-Images – Private Registry Anzeigen der, in der Private Registry, gespeicherten Images► curl http://localhost:5000/v2/mycentos-img/tags/list

Abrufen des Images aus der Private Registry und ablegen in dem Repository► docker pull localhost:5000/mycentos-img:0.0.1

22.06.2017 Docker – Eine Einführung 20

Page 21: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ImageI

Image bauen und im Repository ablegen► docker build -t myubuntu-img -f ubuntu.dockerfile .

Image aus dem Repository entfernen► docker rmi <IMAGE>

alle Images aus dem Repository entfernen

22.06.2017 Docker – Eine Einführung 21

► docker rmi $(docker images -q)

Page 22: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ContainerContainer erzeugen und starten► docker run -i --name="myubuntu" -d myubuntu-img bin/bash

Auflistung der laufenden Container ► docker ps

Per Console auf Container aufschalten► docker-machine ssh <DOCKER_VM>► docker exec -it <CONTAINER> bash

22.06.2017 22 Docker – Eine Einführung

Page 23: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ContainerContainer anhalten► docker stop <CONTAINER>Auflistung der angehaltenen Container ► docker ps -aAngehaltenen Container starten► docker restart <CONTAINER>Angehaltenen Container entfernendocker rm <CONTAINER>Alle angehaltenen Container entfernen► docker rm $(docker ps -a -q)

22.06.2017 23 Docker – Eine Einführung

Page 24: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker ContainerInstallieren von PING im Ubuntu Container► apt-get update► apt-get install iputils-ping

Am Container vorgenommene Änderungen in das zugehörige Image zurückschreiben► docker commit <CONTAINER> <IMAGE>

22.06.2017 24 Docker – Eine Einführung

Page 25: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Container LinkingEin Container kann als Client auf die Dienste eines anderen Containers auf demselben Host, über eine private Netzwerkschnittstelle, zugreifen. Bei dem Client-Container werden dabei die Umgebungsvariablen und die /etc/hosts Datei automatisch angepasst.

Service-Container starten► docker run -i --name="service-container" -d myubuntu-imgbin/bash

Client-Container starten► docker run -i --name="client-container" --link="service-container" -d myubuntu-img bin/bash

22.06.2017 Docker – Eine Einführung 25

Page 26: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Container LinkingErweitere Umgebungsvariablen des Client-Containers ausgeben► docker exec client-container env

Auf dem Client-Container aufschalten und ein ping über den Namen des Service –Containers absetzen► docker exec -it client-container bash► ping service-container

22.06.2017 Docker – Eine Einführung 26

Page 27: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Data VolumesZugriff auf gemeinsam genutztes Laufwerk, das von einem dedizierten Container bereitgestellt wird. Hiermit lassen sich persistente Daten zwischen Docker-Containern teilen

Daten Container starten► docker run -i --name="data-container" -v /share -d myubuntu-img bin/bash

Client Container starten► docker run -i --name="client-container" --volumes-from="data-container" -d myubuntu-img bin/bash

Auf dem Client-Container aufschalten► docker exec -it client-container bashAuf den Daten-Container zugreifen► cd share

22.06.2017 Docker – Eine Einführung 27

Page 28: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker Host

Docker Registry

Images und Container weitergeben

22.06.2017 Docker – Eine Einführung 28

Docker Image

Docker Container

Dockerfile

Image TAR

Container TAR

commit

save

run

build

export

load

import

Page 29: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Images und Container weitergebenImage speichern► docker save -o <FILE_NAME>.tar <IMAGE>

Image in das Repository laden► docker load -i <FILE_NAME>.tar

Container speichern► docker export -o <FILE_NAME>.tar <CONTAINER>

Container eines Images in das Repository laden► cat <FILE_NAME>.tar | docker import - <CONTAINER>

22.06.2017 Docker – Eine Einführung 29

Page 30: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker in der Webentwicklung Dockerfile

rebel.xml

22.06.2017 Docker – Eine Einführung 30

Page 31: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker in der Webentwicklung

22.06.2017 Docker – Eine Einführung 31

Page 32: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker in der Webentwicklung

22.06.2017 Docker – Eine Einführung 32

Page 33: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Docker in der Webentwicklung Image im Repository ablegen► docker build -t mytomcat-img -f tomcat.dockerfile .

Container erzeugen, starten und internen Port 8080 auf den externen Port 8080 mappen► docker run -p 8080:8080 --name="mytomcat" -d mytomcat-img

IP Adresse des Docker Hosts abfragen► docker-machine ip default

Zugriff über Browser► http://192.168.59.103:6060/

22.06.2017 Docker – Eine Einführung 33

Page 34: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Multi Container Applikationen – Docker ComposeDefinition von Multi-Container Applikationen in einer Datei

Starten/Stoppen der Multi-Container Applikation mit einem Kommando

docker-compose.yml

22.06.2017 Docker – Eine Einführung 34

Page 35: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Multi Container Applikationen – Docker ComposeMulti-Container Applikation starten ► docker-compose up -d

Laufende Container anzeigen► docker-compose ps

Logfiles der Container anzeigen► docker-compose logs

Multi-Container Applikation stoppen► docker-compose stop

22.06.2017 Docker – Eine Einführung 35

Page 36: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Clustering Docker – Docker SwarmStarten des Docker Swarm Containers und erzeugen des Discovery Tokens► docker run swarm:1.0.0 create

Erzeugen einer VM mit dem Swarm Master und starten der VM► docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://ba8e1912bf4c9c6751931425ac1cb37fswarm-master

Erzeugen von zwei Swarm Node VMs und starten der VMs► docker-machine create -d virtualbox --swarm --swarm-discovery token://ba8e1912bf4c9c6751931425ac1cb37f swarm-agent-00

► docker-machine create -d virtualbox --swarm --swarm-discovery token://ba8e1912bf4c9c6751931425ac1cb37f swarm-agent-01

22.06.2017 Docker – Eine Einführung 36

Page 37: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Clustering Docker – Docker SwarmDocker Enviroment auf den laufenden Swarm Master setzen► eval $(docker-machine env --swarm swarm-master)

Ausgabe des Statusinformationen über den Swarm► docker info

Image bauen und im Repository ablegen► docker build -t myubuntu-img -f ubuntu.dockerfile .

Container auf Basis des gerade erzeugten Images auf den Swarm Nodes erzeugen und starten ► docker run -i --name="myubuntu" -d myubuntu-img bin/bash

22.06.2017 Docker – Eine Einführung 37

Page 38: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Clustering Docker – Docker SwarmPer Console auf den Ubuntu Container des Swarm Node 00 aufschalten► docker-machine ssh swarm-agent-00► docker ps► docker exec -it <CONTAINER> bash

22.06.2017 Docker – Eine Einführung 38

Page 39: Docker - Eine Einführung · Microsoft PowerPoint - Docker - Eine Einführung Author: hartmann Created Date: 6/22/2017 6:37:57 PM ...

Vielen Dank für Ihre Aufmerksamkeit.