View
8
Download
0
Category
Preview:
Citation preview
DockerEine Einführung
Andreas Hartmann
22.06.2017
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
Dev Ops in Entwicklung, Test & Produktion
22.06.2017 Docker – Eine Einführung 3
Entwicklung Unit Tests IntegrationsTests . . . Tests Produktion
Container versus VM
► schneller & sparsamer
22.06.2017 Docker – Eine Einführung 4
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
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
Docker ÖkosystemDocker Compose► Verteilte Multi-Container-Anwendungen► Starten/Stoppen der Multi-Container
Applikation mit einem Kommando
22.06.2017 Docker – Eine Einführung 7
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
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
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
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
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
Docker Toolbox installieren
https://www.docker.com/docker-toolbox
22.06.2017 Docker – Eine Einführung 13
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
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
Host Directory Volumes
► cd /c/Users/hartmann22.06.2017 Docker – Eine Einführung 16
Host Directory Volumes
► mkdir windows-share► sudo mount -t vboxsf share windows-share
22.06.2017 Docker – Eine Einführung 17
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
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
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
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)
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
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
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
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
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
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
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
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
Docker in der Webentwicklung Dockerfile
rebel.xml
22.06.2017 Docker – Eine Einführung 30
Docker in der Webentwicklung
22.06.2017 Docker – Eine Einführung 31
Docker in der Webentwicklung
22.06.2017 Docker – Eine Einführung 32
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
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
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
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
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
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
Vielen Dank für Ihre Aufmerksamkeit.
Recommended