Docker


Agenda

  • Was ist Docker?
  • Beispiele für Docker-Images
  • Docker Image erstellen
  • Docker Compose
  • Abschlussworte / Tipps

Was ist Docker?

  • Eine Containerverwaltung für virtuelle Umgebungen
    • Es erstellt keine VMs
  • Nutzt die echte Hardware
  • Prozesse laufen isoliert

Was kann Docker?

  • Ports der Container freigeben
  • Netzwerkverbindung unter den Containern herstellen
  • Volumes gemeinsam nutzen
  • Abhängigkeiten definieren

Was ist ein Container?

  • Isolierte Umgebung die auf Images aufbaut
  • Enthält alles, was die Applikation benötigt

Was ist ein Image?

  • Basis um ein Container zu erstellen
  • Beispiel Image: debian:jessie
  • Änderungen als neue Image speichern via
    docker commit

Was ist ein Volume?

  • Datenspeicher für Container
  • Host-Ordner für die Docker-Maschine freigeben
  • Datencontainer erstellen und via --volumes-from einbinden

Docker Registry

  • Ort an dem Docker-Images abgelegt sind
    • Docker Hub
    • Github
    • Eigene Quelle

Vor und Nachteile

Vorteile

  • Keine unnötige Resourcenverschwendung
  • Auch unter Windows anwendbar
  • Einfach zu bauen

Nachteile

  • Keine Benutzerinteraktion beim Bauen möglich
  • Nur selbe Gastsysteme möglich

Docker Beispiele

Befehlsbeschreibung


                            docker
                            run
                            -it
                            --name test-alpine
                            --volume `pwd`:/data
                            alpine:latest
                            /bin/sh
                
run Starte einen Container
-it Interaktiv und mit einer eigenen tty
--name test-alpine Einen Namen festlegen
--volume Mounte einen Pfad in den Container
alpine:latest Container:Version die gestartet wird
/bin/sh Der auszuführende Befehl im Container

MySQL-Container

auf Port 3307

Prozesse

laufen auf dem Host

Testumgebungen

können einfach erstellt werden

Sockets

können gemeinsam genutzt werden

Abhängigkeiten

können via --link definiert werden

Benötigte Pakete installieren?

Eigene Image erstellen

Konfiguration via Dockerfile

  • Standard Konfigurationsdatei die genutzt wird
  • Alle Befehle um einen Container zu erstellen
  • Befehle sollten abgeschlossen sein
    • Jeder RUN-Befehl wird gecached
    • RUN apt-get update && apt-get install -y wget
  • Dateiname lautet Dockerfile

Dockerfile Beispiel

Verwendung

Docker Compose

  • Eigenständige Anwendung die installiert werden muss
  • Wird genutzt um mehrere Container gemeinsam zu starten
  • Eine Konfiguration docker-compose.yml

Komplett Beispiel

Tipps und Hinweise

  • Dockerfile Cache nach jeden RUN Befehl
  • --rm für Testumgebungen
  • Installationsscript vor Docker Build

Docker History

  • docker history custom-php-mysql
    • Alle zustände sind hinterlegt
    • Auch Kennwörter!

Docker GUI

Kitematic

Docker Verwaltung

cadvisor

Monitoring als Container

Ausprobieren

Projetmanagement Redmine

Gitlab

Ende


Danke für die Aufmerksamkeit


Docker