Add install-docker.sh

This commit is contained in:
2026-06-18 17:43:26 +00:00
parent 8d8a02d402
commit 678ba85d05
+78
View File
@@ -0,0 +1,78 @@
#!/usr/bin/env bash
#
# install-docker.sh — Docker Engine installer voor Ubuntu
# Idempotent: veilig om meerdere keren te draaien.
#
# Gebruik:
# curl -fsSL https://<short-url> | sudo bash
# of:
# curl -fsSL https://git.hiddenden.cafe/Latte/<repo>/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"