#!/usr/bin/env bash # # install-docker.sh — Docker Engine installer voor Ubuntu # Idempotent: veilig om meerdere keren te draaien. # # Gebruik: # curl -fsSL https:// | sudo bash # of: # curl -fsSL https://git.hiddenden.cafe/Latte//raw/branch/main/install-docker.sh -o install-docker.sh # sudo bash install-docker.sh # set -euo pipefail # ── Veiligheidschecks ──────────────────────────────────────────────── if [[ "$(id -u)" -ne 0 ]]; then echo "Dit script moet als root draaien. Gebruik: sudo bash $0" >&2 exit 1 fi if ! grep -qi ubuntu /etc/os-release; then echo "Waarschuwing: dit lijkt geen Ubuntu te zijn. Doorgaan op eigen risico." >&2 fi # De gebruiker die straks in de docker-groep moet komen. # Werkt ook via sudo: pakt de oorspronkelijke gebruiker, niet root. TARGET_USER="${SUDO_USER:-${USER:-root}}" log() { echo -e "\033[1;36m==>\033[0m $*"; } # ── Al geïnstalleerd? ──────────────────────────────────────────────── if command -v docker >/dev/null 2>&1; then log "Docker is al geïnstalleerd: $(docker --version)" log "Niets te doen. Klaar." exit 0 fi # ── Conflicterende pakketten verwijderen ───────────────────────────── log "Oude/conflicterende pakketten verwijderen (indien aanwezig)" for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt-get remove -y "$pkg" >/dev/null 2>&1 || true done # ── Repository + GPG key instellen ─────────────────────────────────── log "Apt voorbereiden en Docker GPG key toevoegen" apt-get update -qq apt-get install -y -qq ca-certificates curl install -m 0755 -d /etc/apt/keyrings if [[ ! -f /etc/apt/keyrings/docker.asc ]]; then curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc fi ARCH="$(dpkg --print-architecture)" CODENAME="$(. /etc/os-release && echo "${VERSION_CODENAME}")" echo "deb [arch=${ARCH} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu ${CODENAME} stable" \ > /etc/apt/sources.list.d/docker.list # ── Docker installeren ─────────────────────────────────────────────── log "Docker Engine installeren" apt-get update -qq apt-get install -y -qq \ docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # ── Service starten ────────────────────────────────────────────────── log "Docker service starten en enablen" systemctl enable --now docker # ── Gebruiker in docker-groep ──────────────────────────────────────── if [[ "$TARGET_USER" != "root" ]]; then log "Gebruiker '${TARGET_USER}' aan docker-groep toevoegen" usermod -aG docker "$TARGET_USER" echo " -> Log uit/in (of: newgrp docker) om docker zonder sudo te gebruiken." fi # ── Verificatie ────────────────────────────────────────────────────── log "Versie: $(docker --version)" log "Klaar. Test met: docker run hello-world"