Docker Compose installieren – Der Compose File Guide

Docker compose lernen

Wie kann ich Docker Compose installieren?

Dieser Guide erklärt Dir es + wie Docker Compose funktioniert.

Starten wir!

Was ist Docker?

Die Software-Virtualiserung Docker nutzt eine Container-Virtualisierung. In diesen Container können Programmen isoliert vom Hosts-System laufen.

Docker als Grundlage
Docker als Grundlage – Docker Compose installieren Steffen Lippke

Im Gegensatz zu virtuellen Maschinen sind Docker-Container leichtgewichtiger und verbrauchen nicht so viel Ressourcen. Die Ressourcen müssen nicht fix zu Beginn genannt sein, sondern die Docker Engine weist den Containern die Ressourcen zu, welche diese zurzeit brauchen.

Der Computer (Host) entscheidet, welche Ressourcen und Hardware dem einzelnen Container zuweisbar sind. Die Containerisierung ermöglicht es, mehrere Instanzen desselben Programms auf einem Computer ohne eine gegenseitige Beeinflussung laufen zu lassen.

Docker Container basieren auf Docker Images (binäre Blobs), welche Du mit einem Terminal-Befehl hochfährst. Die Docker Images beinhaltet den kompilierten Code der Software und alle Abhängigkeiten. Die Container nutzen ein konfigurierbares und virtualisiertes Netzwerk und separate Speicher (Volumes).

Was ist eine Docker Compose?

Alle Entwickler lieben eine „Docker Compose“, die für das viele Tippen in ein Terminal zu faul sind. Erweiterte Docker-Kommandos sind sehr lang und unübersichtlich, wegen der schlechten Lesbarkeit in der CLI.

Docker Compose ganz einfach - Docker Compose installieren Steffen Lippke

Ein Docker-Compose Datei speichert den Inhalt des Docker Kommandos ab. Ein Docker-Compose ist kein normales Shell-Script, sondern eine yml- / yaml-Datei, welche die notwendigen Parameter bereitstellt.

Der Entwickler muss nur noch docker-compose up tippen, um den Container zu starten und docker-compose down zu herunterfahren.

Warum Docker Compose bevorzugen?

Diese Top 3 Gründe sollten Dich dazu bewegen, die Docker-CLI in den meisten Fällen links liegenzulassen:

Schon wieder was vergessen? – Persistent

Docker Container brauchen je nach Installation verschiedene Parameter. Schnell hast Du einen Parameter vergessen oder verlierst Dich in dem ultralangen Kommando.

Das Dateiformat speichert das Kommando in einem lesbaren Format ab.

Tausende Snippets managen – Struktur

Docker Kommandos können je nach Wunsch variiert sein.

Die YAML macht den Chaoten einen Strich durch die Rechnung und jeder Aspekt ist einzeln strukturiert anzugeben.

Starten und Stopp-Automatik

Du möchtest einen Docker Container mit weniger als 16 Tastenanschlägen hochfahren:

docker-compose up

// und

docker-compose down

Installieren

Docker

Für die Docker Compose brauchst Du erst einmal eine Docker Installation auf Deinem Computer. Hast Du ein Debian-basierendes System (Ubuntu, Linux Mint, PopOS usw.) gebe einfach ein.

sudo apt-get install docker.io

Manuelle kannst Du so vorgehen. Lade die Voraussetzungen herunter:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Füge die Keys / Repos hinzu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

apt-cache policy docker-ce

Installiere Docker über apt:

sudo apt install docker-ce

Starte den Docker Service:

sudo systemctl status docker

Teste den
Befehl
mit:

docker

In Windows nutzt Du das Windows Subsystem for Linux (WSL), um die Software zu laufen zu bekommen. Alternativ kannst Du das Desktop-Programm nutzen:

https://docs.docker.com/desktop/install/windows-install/

Downloade Dir die .exe und führe das Programm aus. Folge der Installationsanleitung und schließe die Installation ab.

Docker-Compose

In Linux / Debian:

sudo apt-get update 
sudo apt-get install docker-compose-plugin

Docker Compose ist Teil von der Windows Version „Docker for Desktop“ und muss nicht nach installiert werden.

Die Docker Compose Datei

Die Docker-Compose Datei benennst Du in einem Repo idealerweise immer docker-compose.yml. Dies ist der Standardname, welcher Docker immer sucht, wenn Du den Befehl docker-compose up tippst.

Die Datei beginnt mit einer Versionsnummer. Jede Version hat einen unterschiedlichen Funktionsumfang. In der Regel solltest Du die neuste verwenden, um alle verfügbaren Features zu nutzen:

version: "3.8"
 services:
 pihole:
 image: pihole/pihole:latest
 ports:
 - "53:53/tcp"
 - "53:53/udp"
 - "67:67/udp"
 - "50006:80/tcp"
 environment:
 TZ: "Europe/Berlin"
 WEBPASSWORD: "superapssword"
 volumes:
 - "./pihole/etc-pihole/:/etc/pihole/"
 - "./pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/"
 restart: unless-stopped

Unter dem Tag services definierst Du freie Namen für die Docker-Container, die Du laufen lassen willst. Start mehrere Docker-Container in einer Compose-Datei, indem Du mehrere Images / Container angibst.

Images

Images von Docker Hub - Docker Compose installieren Steffen Lippke
Images von Docker Hub – Docker Compose installieren Steffen Lippke

Das Image „pihole/pihole:latest“ ist vom Docker Hub frei verfügbar. Von dort kannst Du 100 Images am Tag downloaden bzw. Deinem lokalen Cache bei einer Neuinstallation verwenden.

Ports und Netzwerk

Dann folgen die Port-Freigaben nach dem Schema:

Host-Port(nach außen):Docker-Port(nach innen)/Transportprotokoll(tcp/udp)

Statt den Ports manuell anzugeben, arbeitet der Modus network-mode:hosts wie die Port-Freigaben wie ein nativ installierte Anwendung auf einem Baremetal-Server. Docker arbeitet mit verschieden Netzwerk-Modi, die Du als Treiber angeben kannst:

  • host: Keine Isolation zwischen den Container – wie ein Baremetal-Server
  • bridge: Die Container können miteinander kommunizieren.
  • overlay: Wenn Du Docker-Swarms miteinander verbinden willst, brauchst Du diese Form der Kommunikation.
  • none: Unterbindet die Kommunikation hinein / heraus.

Umgebungsvariablen

Je nach Container brauchst Du noch einen Klumpen an Umgebungsvariablen. Dazu musst Du Dich mit der Doku der Software auseinandersetzen.

Volumes

Was wie so speichern
Was wie so speichern – Docker Compose installieren Steffen Lippke

Die Volumes halten alle Daten, welche nach dem Neustart nicht verfallen dürfen. Ohne ein Docker-Volume setzt die Docker Engine die Anwendung während des Starts zurück. Du kannst entweder Docker Volumes direkt in der yml erstellen …

volumes:

  myfirstvolume:

… oder vorher mit einem Docker-Befehl:

docker volume create myfirstvolume

Du kannst die Volumes alternativ in einen Ordner auf Dein Host-Dateisystem mounten. Dazu muss der Ordner vorhanden sein, welche Du in der Docker-Compose angibst:

/etc/pihole/

Eine Ordner-Verschachtlung kannst Du mit mkdir -p /etc/pihole/ erstellen.

Restart-Policy

Der Container hält sich an die Restart-Policy, wenn dieser abstürzt.

  • always: Starte jedes Mal neu
  • unless-stopped: Wie always nur beim expliziten Stop-Befehl ist der Container zu stoppen
  • no: Kein Neustart
  • on-failure: Wenn ein Fehler auftritt, dann startet der Container neu.

Integrations-Guide mit Docker Build

Eine Docker-Compose lässt sich gut mit einem Docker-Build verbinden. Die Dockerfile beinhaltet, wie aus dem Code, eine Build und Run-Container ein fertiges Image erstellt wird. Jedes Docker-Compose braucht ein Image, welch auf einem solchem Dockerfile basiert. Die Images haben wir uns vorher vom Docker Hub gezogen. Alternativ können wir statt:

image: pihole/pihole:latest

-->

build:.

In unser Compose-File schrieben. Wenn der Code, die Dockerfile und Docker-compose im gleichen Ordner liegen, startet der Docker Image Build automatisch. Die Scripts kompilieren den Quellcode, bauen das Image und die Compose startet das Image mit allen Parameter, Volumens und Netzwerken. Genial!


Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Webseite nutzt nur technisch notwendige Cookies.