Add install-docker.sh
This commit is contained in:
@@ -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"
|
||||
Reference in New Issue
Block a user