#!/usr/bin/env bash set -euo pipefail # ------------------------------------------------------------ # Docker + Docker Compose Plugin Installer for Debian/Ubuntu # ------------------------------------------------------------ if [[ "${EUID}" -ne 0 ]]; then echo "Bitte als root oder mit sudo ausführen." exit 1 fi echo "==> Prüfe Betriebssystem ..." if [[ ! -f /etc/os-release ]]; then echo "Fehler: /etc/os-release nicht gefunden." exit 1 fi # shellcheck disable=SC1091 source /etc/os-release if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then echo "Dieses Skript unterstützt nur Debian und Ubuntu." echo "Erkanntes System: ${ID}" exit 1 fi ARCH="$(dpkg --print-architecture)" KEYRING_DIR="/etc/apt/keyrings" DOCKER_GPG="${KEYRING_DIR}/docker.asc" REPO_FILE="/etc/apt/sources.list.d/docker.list" echo "==> Installiere Basis-Pakete ..." apt-get update apt-get install -y ca-certificates curl gnupg lsb-release echo "==> Erstelle Keyring-Verzeichnis ..." install -m 0755 -d "${KEYRING_DIR}" echo "==> Lade Docker GPG-Key ..." curl -fsSL "https://download.docker.com/linux/${ID}/gpg" -o "${DOCKER_GPG}" chmod a+r "${DOCKER_GPG}" echo "==> Konfiguriere Docker APT-Repository ..." echo \ "deb [arch=${ARCH} signed-by=${DOCKER_GPG}] https://download.docker.com/linux/${ID} \ ${VERSION_CODENAME} stable" | tee "${REPO_FILE}" > /dev/null echo "==> Aktualisiere Paketquellen ..." apt-get update echo "==> Installiere Docker Engine, CLI, Containerd und Compose Plugin ..." apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin echo "==> Aktiviere und starte Docker-Dienst ..." systemctl enable docker systemctl restart docker # Optional: Benutzer zur docker-Gruppe hinzufügen, falls per sudo gestartet if [[ -n "${SUDO_USER:-}" && "${SUDO_USER}" != "root" ]]; then echo "==> Füge Benutzer '${SUDO_USER}' zur docker-Gruppe hinzu ..." usermod -aG docker "${SUDO_USER}" || true echo "HINWEIS: Damit Gruppenrechte greifen, bitte einmal ab- und wieder anmelden." fi echo "==> Installation abgeschlossen." echo echo "Installierte Versionen:" docker --version || true docker compose version || true echo echo "Teste Docker ..." docker run --rm hello-world || true echo echo "Fertig." echo "Verwendung von Compose:" echo " docker compose up -d"