-
Was ist ein vServer?
-
vServer und Sicherheit
-
vServer - Anwendungsfälle
-
vServer bei dogado
-
vServer und Plesk
-
vServer Betriebssyteme
-
vServer Glossar
VPS von dogado - gehostet in Deutschland
Behalte die Kontrolle über deinen vServer/VPS und steuere deine Online-Präsenz souverän. Profitiere von Hochgeschwindigkeits-NVME-SSDs, die bis zu 6-mal schneller sind als herkömmliche.
Was ist Docker?
Docker ist die am weitesten verbreitete Container Technologie. Docker punktet durch seine Einfachheit und ermöglicht es, schnell neue Dienste (z.B. Webserver, Datenbanken) bereitzustellen. Diese lassen sich sowohl in Test-Umgebungen als auch produktiv einsetzen. Durch seine Vielseitigkeit und die vielen vorgefertigten Images wurde Docker sehr beliebt. Docker ist im Vergleich zur Virtualisierung (Virtuelle Maschinen) einfacher zu replizieren, schneller aufzusetzen und besser zu skalieren. Im Laufe dieser Anleitungen werden wir euch die Einfachheit und enormen Funktionsumfang von Docker zeigen.
Docker Images und Container
Bei Docker werden häufig die Begriffe „Image“ und „Container“ verwendet. Diese sollen hier nun etwas erklärt werden.
Der Startpunkt jedes Docker Containers ist immer ein Image. Im Gegensatz zu Virtuellen Maschinen (VMs) ist ein Image keine „virtuelle Festplatte“, welche alle Daten inklusive des Betriebssystems enthält. Bei Docker ist ein Image ein „Read-Only“ Dateisystem („nur Lesen“), welches die Basis für den späteren Container bildet. Dies bedeutet, dass anders als bei virtuellen Maschinen (VMs) das Docker Image nie verändert wird. Werden innerhalb des Containers neue Dateien hinzugefügt oder verändert, so werden diese nicht im Image verändert, sondern in einem sogenannten „Overlay-Dateisystem“, welches auf dem Docker Host innerhalb eines Verzeichnisses abgebildet wird.
Dadurch, dass Images nie verändert werden, können von einem Image beliebig viele Container erstellt und gleichzeitig gestartet werden. Ein Container ist also die „aktuelle ausgeführte Instanz“ eines Images. Im Gegensatz zu einem Image, welches nur Speicherplatz belegt, nutzt ein Container auch die Ressourcen CPU und Arbeitsspeicher.
Aufgrund der hohen Beliebtheit von Docker kann man im Internet sehr viele Anwendungen schon als fertiges Image bekommen. Derzeit gibt es auf dem Docker Hub (https://hub.docker.com) mehr als 13 Millionen verschiedene Images zum Download. Die meisten dieser Images sind kostenlos zugänglich. Viele Images sind sogar von den offiziellen Herstellern erstellt und auch als solche gekennzeichnet.
Ihr könnt euch auch mit einem einfachen Texteditor selbst „Dockerfile“ erstellen, welche später zu einem Image umgewandelt werden können.
Vorteile von Docker
Docker bietet viele Vorteile, weshalb es auch in Unternehmen gerne genutzt wird. Hier eine kurze Vorstellung einiger Kriterien:
- Ressourcenschonend
Container sind viel ressourcenschonender als virtuelle Maschinen (VMs). Docker Container teilen sich den Kernel des Wirtssystems und sind daher viel kleiner. So ist das bei Docker beliebte Linux System „Alpine Linux“ gerade mal ca. 5 MB groß und dient als Grundlage für viele Container. Durch Docker ist es auch problemlos möglich, dass auf einem Server mehrere Container gleichzeitig laufen können.
- Skalierbarkeit
Da alle Container identisch sind und beliebig oft aus demselben Image aus erstellt werden können, kann man bei Bedarf schnell neue Server hinzufügen und die Anwendung bereitstellen. Hierzu werden die Programme Docker Swarm sowie Kubernetes genutzt. Diese nutzen Docker als Grundlage.
- Bereitstellungszeit
Da die Docker Container mittels Images erstellt werden, dauert es nur wenige Sekunden, bis ein Container bereit ist und genutzt werden kann. Es müssen zudem keine Änderungen an dem Wirtsbetriebssystem durchgeführt werden. Docker Images lassen sich beliebig mit wenigen Textzeilen an die eigenen Bedürfnisse in kürzester Zeit anpassen.
- Updates
Durch Docker ist es möglich sehr schnell Updates durchzuführen. Dazu reicht es in der Regel den Befehl „docker compose pull“ einzugeben, damit neuere Versionen der Images heruntergeladen werden. Anschließend können diese dann gestartet werden. Ein Rollback ist ebenfalls schnell möglich, da ihr auch auf bestimmte Versionsnummer springen könnt.
- Trennung zwischen den Containern
Docker ermöglicht eine klare Trennung zwischen einzelnen Containern. Dies ist sehr nützlich, wenn zum Beispiel eine Anwendung PHP 8.x benötigt, eine andere Anwendung aber PHP 7.x. Auf einer einzigen VM wäre beides zusammen nur schwer realisierbar. Bei Docker stellt dies kein Problem dar.
Docker installieren
Docker lässt sich auf diversen Systemen sehr schnell installieren. Es werden die großen Linux Distributionen wie Debian, CentOS, Ubuntu und Fedora unterstützt sowie Windows und MacOS.
Auf der Homepage des Herstellers gibt es genaue Anleitungen für die einzelnen Systeme.
Docker installieren unter Debian 13
In der Regel wird Docker auf einem Server ohne grafische Oberfläche installiert. Daher führen wir alle Befehle in der Konsole (Shell) aus.
Alle nachfolgenden Befehle führen wir als „root“ aus. Zum Benutzer „root“ wechselt ihr mit folgendem Befehl:
sudo -i
Gebt nun als „root“ folgende Befehle ein:
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
Nachdem ihr diese Befehle ausgeführt habt, können wir mit der eigentlichen Installation von Docker beginnen. Dazu gebt ihr folgendes ein:
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Nun können wir testen, ob die Installation erfolgreich war. Gebt dazu folgendes ein:
docker compose version
docker version
docker run --rm hello-world
Nun wird das Image „hello-world“ heruntergeladen und ihr solltet anschließend folgendes sehen:
Hier sehen wir die genaue Versionsnummer von Docker und Docker Compose. Ebenfalls konnte das Docker Image korrekt heruntergeladen und gestartet werden.
Daten dauerhaft speichern
Wie bereits in Kapitel 2 erklärt, startet Docker Container, welche aus Images bestehen. Diese Container können während des Betriebs verändert bzw. erweitert werden. Dies können zum Beispiel neue Einträge in einer Datenbank oder neue Dateien sein. Wird ein Container dann gelöscht, so sind alle darin enthaltenen Daten verloren. Dies passiert zum Beispiel beim Update eines Containers. Dort wird der Container gestoppt, gelöscht und anschließend aus dem neuen Image neu erstellt.
Named Volumes
Diese Named Volumes werden von Docker selbst verwaltet und dienen als fester Speicher. Docker kann sie je nach Konfiguration selbst anlegen und verwalten. Mit folgendem Befehl könnt ihr ein Volume selbst anlegen:
docker volume create db_data
Dieses Volume übersteht den Neustart von Containern. So wird es zum Beispiel möglich, dass eine Datenbank ihre Daten behält, auch nach einem Update. Hier ein Beispielcode, welcher die Einbindung dieses Volumes zeigt:
docker run -d --name db \
-e MARIADB_ROOT_PASSWORD=geheim \
-v db_data:/var/lib/mysql \
mariadb:11
Durch den Einsatz vieler Container kann es dazu kommen, dass ihr nach kurzer Zeit sehr viele Volumes auf eurem Server habt. Mit folgendem Befehl könnt ihr euch einen Überblick über die Volumes verschaffen:
docker volume ls
Wenn ihr genauere Informationen zu einem Volume (zum Beispiel „db_data“ aus dem Beispiel) erfahren wollt, so gebt ihr nachfolgenden Befehl ein:
docker volume inspect db_data
So erfährt ihr unter anderem auch den genauen Pfad, wo das Volume auf eurem Server gespeichert ist.
Volumes löschen ist ebenfalls möglich. Dazu gebt ihr einfach folgendes ein:
docker volume rm db_data
Bind Mounts
Die zweite Möglichkeit sind Bind Mounts. Bei dieser Möglichkeit gebt ihr ein spezifisches Verzeichnis an, in welches der Container die Daten speichern soll. Dazu hier ein Beispiel:
docker run -d --name webserver \
-p 8080:80 \
-v /opt/containers/webserver/html:/usr/share/nginx/html \
nginx:alpine
Alle Daten, die der Container also intern unter „/usr/share/nginx/html“ sieht, liegen auf unserem Server im Verzeichnis „/opt/containers/webserver/html“. So ist es für Administratoren sehr einfach Konfigurationsdateien, HTML Webseiten oder ähnliches von Hand auszutauschen.
Unterschiede der beiden Varianten
Beide Varianten haben ihre Vor- und Nachteile. Wenn ihr die Mounts selbst verwalten wollt, Ordner im konkreten Dateipfad einbinden oder öfters Dateien austauschen wollt, so eignen sich Bind Mounts besser. Wenn der Fokus aber auf einer einfachen Verwaltung sowie Rechtemanagement durch Docker selbst liegt, so kommen eher Named Volumes in Frage.
Docker Compose
Mit Docker selbst könnt ihr immer nur einen Container einrichten. Dies funktioniert zwar, aber ist sehr aufwendig, wenn ihr beispielsweise 6 Container für eine Anwendung benötigt. Hier hilft euch Docker Compose. Dies haben wir in dieser Anleitung bereits zusammen mit Docker installiert. Grundlage bildet eine „docker-compose.yml“ Datei im aktuellen Verzeichnis, welche alle Informationen enthält. Darin ist beispielsweise festgeschrieben, welche Container gestartet, welche Parameter übergeben und über welches Netzwerk kommuniziert werden soll. Alle Anleitungen bei dogado nutzen Docker Compose, da für die meisten Projekte immer mehrere Docker Container benötigt werden. So lässt sich dann beispielsweise ein kompletter E-Mail-Server mit dem Befehl „docker compose up“ starten.
Docker Hub
Docker Hub ist eine Plattform, welche euch über 13 Millionen Docker Images zur Verfügung stellt. Neben vielen offiziellen Images der Hersteller finden sich dort auch viele Images, die durch einzelne Community Mitglieder erstellt und gewartet werden. Grundsätzlich kann sich jeder bei Docker Hub kostenfrei registrieren und seine eigenen Images für alle zur Verfügung stellen. Zum Downloaden der Images wird kein Account benötigt. Möchte man jedoch mehrere private Repositorien erstellen (nur freigegebene Mitglieder sichtbar) so muss man ein Abo (https://www.docker.com/pricing) abschließen.
Docker Hub bietet dem Nutzer eine gute Suchfunktion und viele Kategorien zur Sortierung an. Dies hilft enorm, sich einen Überblick zu verschaffen.
Jedes Image hat im Docker Hub eine „eigene Seite“. Hier kann man sich informieren, welche Versionen bereitgestellt werden und auf was geachtet werden muss.
Docker Anwendungsbeispiele
Innerhalb dieses Tutorials stellen wir mehr als 60 Anleitungen bereit. Alle diese Anleitungen sind kostenlos und auf ihre Funktion geprüft. Regelmäßig kommen noch Anleitungen zu weiteren spannenden Themen hinzu.
Alle Anleitungen im Detail vorzustellen, würde den Rahmen sprengen. Daher hier eine kurze Vorstellung einiger Anleitungen:
- BigBlueButton installieren - ein Open-Source Webkonferenzsystem.
- Grafana installieren - bereitet verschiedene Daten zum Beispiel CPU-Auslastung, Arbeitsspeicherverbrauch grafisch auf.
- Moodle installieren - eine beliebte Open-Source Lernplattform.
- Mailcow installieren - ein kompletter E-Mail Server mit vielen Extras.
- Mattermost installieren - ein Open-Source Chatsystem.
- Nextcloud installieren - eine Open-Source Cloud, welche ihr selbst betreiben könnt.
- Traefik installieren - ein Reverse Proxy, welcher euch ermöglicht mehrere Web-Anwendungen gleichzeitig über einen Port (Beispiel 80, 443) laufen zu lassen.
Die Anleitungen selbst sind so aufgebaut, dass ihr einen kurzen Überblick bekommt, was euch erwartet und ihr dann einfach den entsprechenden Code kopieren könnt. So könnt ihr in kürzester Zeit zum Docker Administrator werden.
VPS von dogado - gehostet in Deutschland
Behalte die Kontrolle über deinen vServer/VPS und steuere deine Online-Präsenz souverän. Profitiere von Hochgeschwindigkeits-NVME-SSDs, die bis zu 6-mal schneller sind als herkömmliche.