04. Nov 2018 05:11
Keine Kommentare

Docker einfach und schnell erklärt

Meine persönlichen Anfänge mit Docker gestalteten sich etwas umständlich, was weder mit dem Erlernen noch der Komplexität von Docker verbunden ist. Es entstand in mir der Eindruck einer gewissen Unübersichtlichkeit der Containervirtualisierungssoftware Docker. Ich möchte mit diesem Artikel gerne jedem Leser den einfachen und vor allem praktisch schnellen Einstieg in Docker ermöglichen - dank Docker Compose.

Docker einfach erklärt

Ganz kurz: Was und wozu ist Docker

Docker ist sog. Container-Virtualisierung. Hierbei wird keine vollständig separate Hardware bereitgestellt, wie bei klassicher Virtualisierung. Stattdessen teilen sich die Container den Kernel und verwenden unter Linux entsprechende Kernelmodule. Bei mir sieht das wie folgt aus.

Im Code sehen wir drei Container: einmal Memcache und MySQL sowie einen Webserver. Jeder Container basiert auf einem Image. Das Image (zu Deutsch Abbild) beinhaltet das Betriebssystem und weitere Software. Ähnlich also wie bei klassicher Virtualisierung. Bei Docker können Images jedoch voneinander abgeleitet werden, sodass ein Image auf einem weiteren Image basieren kann.

So sieht meine Docker-Konfiguration aus

Man kann es sich mit Docker und der Konsole unglaublich aufwendig machen. Ich empfehle grundsätzlich jedem die Verwendung von Docker-Compose. Hierdurch lässt sich die gesamte Konfiguration für eine Umgebung mit mehreren Containern sehr einfach hinterlegen.

Der obige Code entstammt meiner "docker-compose.yml"-Datei und definiert den Webserver, die MySQL-Datenbank und den Memcache-Server. Das Format der Datei für Docker-Compose ist immer YAML.

  • Jeder Eintrag unter "services" ist der Name für den Container (z.B. mysql-dev)
  • "image" definiert das Image, wie es vom Docker-Hub geladen werden soll
  • "environment" definiert Umgebungsvariablen, die notwendig sind
  • "ports" definiert die Portweiterleitung vom Host zum Container
  • "volumes" sind virtuelle Festplatten für den Container (s.u.)
  • "build" erlaubt eine eigene Dockerfile für ein Image zu definieren (s.u.)

So sieht nun eine einfache Docker-Compose YAML-Datei aus. Mit dem Befehle "docker-compose up" lassen sich die Container starten. Mit dem Beispiel geht das noch nicht, denn hierfür ist die Dockerfile notwendig.

Volumes für Docker-Container

Alles, was in einem Docker-Container passiert, verschwindet sobald der Docker-Container beendet wird. Es kann also dauerhaft nichts gespeichert werden. Das ist insbesondere bei Datenbanken nicht sehr schön.

  • Beispiel "./data:/var/lib/mysql:rw":
    Der Pfad "./data" relativ zur YAML-Datei wird mit dem Pfad "/var/lib/mysql" durch den Anhang ":rw" zum Lesen und Schreiben verknüpft (ähnlich Linux Symlink).

Wird ein Pfad verknüpft (Richtigerweise im Container durch "mount" eingehangen), so kann der Container auch auf Daten des Hosts zugreifen, auf dem die Docker-Container laufen.

Eine einfache Dockerfile für einen Container mit PHP und Apache

Die meisten Docker-Container aus dem Docker-Hub lassen sich problemlos sofort verwenden (Achtung, keine Container aus nicht vertrauenswürdigen Quellen benutzen!) und wenn nicht, kann man sich auch einen eigenen erstellen.

Der obige Inhalt ist exakt meine Dockerfile für den Webserver, den ich eingangs gezeigt habe. Mit "FROM" wird der ursprüngliche Container "php:7.2-apache" aus dem Docker-Hub referenziert und mit "RUN" lassen sich Shell-Befehle ausführen.

Docker-Container starten, stoppen, löschen

Nachfolgend die Auflistung der Befehle zum Starten, Stoppen und Löschen von Docker-Compose Containern, Docker-Containern und Docker-Images. Bitte beachten, dass man für Docker-Compose mit dem Terminal (Windows: mit PowerShell) immer im Arbeitsverzeichnis sein muss, wo sich die docker-compose.yml befindet.

  • docker-compose up: startet alle Container der YAML-Datei
  • docker-compose up mysql-dev: startet nur den mysql-dev Container
  • docker-compose stop: stoppt alle Container aus der YAML-Datei
  • docker-compose ps: Zeigt alle laufenden/beendeten Container aus der YAML
  • docker-compose rm docker_mysql-dev_1: Löscht Container "docker_mysql-dev_1"
  • docker image ls: Zeigt ALLE Images auf dem System an
  • docker image rm docker_webserver-dev: Löscht das Image webserver-dev
  • docker container ls: Zeigt ALLE Container auf dem System an
  • docker container rm docker_webserver-dev_1: Löscht diesen Container

Das sind so ziemlich alle Befehle, die man als einfacher Docker-Anwender jeden Tag benötigt. Container starten, stoppen, löschen. Ich kann jedem nur empfehlen, sich wirklich auf Docker-Compose zu stürzen, denn damit versteht man die anderen Innereien von Docker auch recht schnell. Ich hoffe der Artikel ist so kurz, wie ich versprochen habe und wünsche viel Erfolg mit Docker!

Bücher zum Thema „Docker“

Die nachfolgenden Bücher behandeln das Thema "Docker" und werden von Amazon empfohlen. Viele dieser Bücher habe ich selbst gelesen und teilweise auch zur Recherche für diesen Artikel genutzt.
39,90 €
Jetzt bestellen »
Docker: Das Praxisbuch für Entwickler und DevOps-Teams. Für Windows, Mac und Linux
Bernd Öggl, Rheinwerk Computing
69,90 €
Jetzt bestellen »
Skalierbare Container-Infrastrukturen: Das Handbuch für Administratoren und DevOps-Teams. Inkl. Container-Orchestrierung mit Docker, Rocket, Kubernetes, Rancher & Co.
Oliver Liebel, Rheinwerk Computing
79,90 €
Jetzt bestellen »
Skalierbare Container-Infrastrukturen: Das Handbuch für Administratoren
Oliver Liebel, Rheinwerk Computing
29,99 €
Jetzt bestellen »
Docker Praxiseinstieg: Deployment, Testen und Debugging von Containern in Produktivumgebungen (mitp Professional)
Karl Matthias, mitp

Diese Artikel könnten Dich auch interessieren

Besucher, die diesen Beitrag gelesen haben, haben sich auch die unten aufgeführten Beiträge angesehen. Schau' doch einfach mal in die Artikel rein.
6 Besucher haben auch das gelesen
3 Besucher haben auch das gelesen
3 Besucher haben auch das gelesen
3 Besucher haben auch das gelesen
2 Besucher haben auch das gelesen
1 Besucher haben auch das gelesen

Kommentare zum Thema „Docker einfach und schnell erklärt“

Wenn Du möchtest, kannst Du hier Kommentare zum Thema hinterlassen und Dich mit anderen Nutzern austauschen. Damit Du kommentieren kannst, musst Du Dich nur anmelden und schon kann es losgehen.
Jetzt zum Kommentieren anmelden