Docker

Logo für Docker von Dotcloud, Apache-Lizenz 2.0

Docker ist der heißeste Scheiß in Sachen Virtualisierung, ein Quasi-Standard für voneinander isolierte Anwendungs-Container. Die Einrichtung und „Orchestrierung“ lohnt sich um so mehr, je größere Maschinenparks es zu verwalten gilt.

Aber auch im kleineren Maßstab kann sich Docker lohnen: komplexe Anwendungen, für die ein Server-Admin normalerweise zahlreiche Pakete installieren und konfigurieren müsste, lassen sich mit wenigen Befehlen „deployen“ – installieren, starten, stoppen, auf einen vorherigen Stand wiederherstellen oder löschen.

Für das Herunterladen und Synchronisieren der Image-Dateien wird das Versionskontrollsystem Git verwendet.

Installation

Eine Installation über die Ubuntu-Paketquellen ist möglich:

sudo apt-get install docker.io

Obwohl Ubuntu LTS-Versionen Updates des Docker-Paketes erhalten, kann es sich lohnen, frische Pakete unverzüglich aus der Docker-eigenen Paketquelle zu beziehen. Dort heißt das Docker-Paket nicht docker.io, sondern docker-ce („ce“ steht für Community Edition).

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce

Besonders einfach, aber nicht gerade sicher lässt sich Dockers Community Edition über das Einrichtungs-Skript von get.docker.com installieren:

wget -qO- https://get.docker.com/ | sh

Root-Rechte und Docker Rootless

Docker benötigt Root-Rechte zum Ausführen des Docker-Dämons und von Containern. Das erzeugt zwangsläufig ein Sicherheitsproblem. Wenn man Docker nicht als Root bzw. per sudo ausführt, sondern den eigenen Benutzer der Gruppe docker hinzufügt, dann erhält der eigene Benutzer dadurch Root-ähnliche Rechte, was die Probleme nicht aus der Welt schafft.

Die Docker-Entwickler sind sich dieses Problems bewusst und haben mit Docker Rootless Abhilfe geschaffen. Das funktioniert häufig, aber eben nur, solange Container keine Root-Rechte benötigen.

Um ein Docker-CE-Setup so zu konfigurieren, dass Docker in einem unprivilegierten Namensraum statt mit Root-Rechten ausgeführt wird, installiert man das folgende Paket, das dieselben Operationen wie das rootless script durchführt, aber gleichzeitig ein App-Armor-Profil konfiguriert, das unprivilegierten Prozessen die Erstellung von Nutzer-Namensräumen erlaubt:

sudo apt install docker-ce-rootless-extras

Alternativen

Redhat hat mit Podman eine teilkompatible Alternative zu Docker veröffentlicht, die von Haus aus ohne Root-Rechte auskommt.