78 lines
3.5 KiB
Bash
78 lines
3.5 KiB
Bash
#!/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" |