#!/bin/bash # ESPO-02-Docker – installiert Docker in gepinnter Version und setzt die Daemon-Grundlagen. # Laeuft als root ueber einen RMM-Bash-Task, idempotent. # Firewallregeln (ufw, DOCKER-USER) kommen in einem eigenen Task, weil dafuer die Adresse # der OPNsense als Parameter gebraucht wird. set -u FEHLER=0 # Gepinnte Staende - hier wird der Flottenstand gesetzt, nicht auf der VM entschieden. DOCKER_VERSION="5:29.8.1-1~ubuntu.24.04~noble" CONTAINERD_VERSION="2.3.5-1~ubuntu.24.04~noble" COMPOSE_VERSION="5.5.1-1~ubuntu.24.04~noble" BUILDX_VERSION="0.37.1-1~ubuntu.24.04~noble" # 1. Paketquelle von Docker einrichten (Schluessel und deb822-Quelle), falls noch nicht vorhanden. install -m 0755 -d /etc/apt/keyrings if [ ! -s /etc/apt/keyrings/docker.asc ]; then curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc || { echo "FEHLER: Schluessel nicht ladbar"; exit 1; } chmod a+r /etc/apt/keyrings/docker.asc fi cat > /etc/apt/sources.list.d/docker.sources </dev/null # 3. Daemon-Grundlagen: Logrotation (der Standardtreiber rotiert nicht) und veroeffentlichte # Ports ohne Adressangabe nur auf die Loopback-Adresse binden. install -d -m 755 /etc/docker cat > /etc/docker/daemon.json <<'CONF' { "log-driver": "local", "log-opts": { "max-size": "20m", "max-file": "5" }, "ip": "127.0.0.1", "live-restore": true } CONF systemctl enable --now docker >/dev/null 2>&1 systemctl restart docker || { echo "FEHLER: docker startet nicht"; exit 1; } # 4. Ergebnis zeigen und pruefen. docker --version docker compose version docker info --format 'Logtreiber: {{.LoggingDriver}} Live-Restore: {{.LiveRestoreEnabled}}' [ "$(docker info --format '{{.LoggingDriver}}')" = "local" ] || { echo "FEHLER: Logtreiber nicht gesetzt"; FEHLER=1; } if [ "$FEHLER" -eq 0 ]; then echo "ESPO02_ERGEBNIS: OK"; exit 0; else echo "ESPO02_ERGEBNIS: FEHLER"; exit 1; fi