49 lines
2.0 KiB
Bash
Executable File
49 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 20-docker — Docker Engine + Compose v2 plugin. $USER added to docker group.
|
|
|
|
step_name="docker"
|
|
step_desc="docker engine + compose v2, add \$USER to docker group"
|
|
step_run="run_docker"
|
|
|
|
run_docker() {
|
|
log "installing docker + compose v2"
|
|
if command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
|
|
ok "docker + compose v2 already installed"
|
|
else
|
|
case "$DISTRO" in
|
|
arch) sudo_ pacman -Sy --noconfirm --needed docker docker-compose ;;
|
|
debian) _docker_debian ;;
|
|
esac
|
|
fi
|
|
|
|
# enable + start (best-effort; skip inside containers without systemd)
|
|
if command -v systemctl >/dev/null 2>&1 && systemctl is-system-running >/dev/null 2>&1; then
|
|
sudo_ systemctl enable --now docker.service containerd.service 2>/dev/null \
|
|
|| warn "could not enable docker.service (no systemd?)"
|
|
else
|
|
warn "systemctl unavailable — start docker manually if needed"
|
|
fi
|
|
|
|
# add the config target user to the docker group (created-user or self)
|
|
if getent group docker >/dev/null 2>&1; then
|
|
if id -nG "${TARGET_USER:-$USER}" | grep -qw docker; then
|
|
ok "${TARGET_USER:-$USER} already in docker group"
|
|
else
|
|
sudo_ usermod -aG docker "${TARGET_USER:-$USER}"
|
|
ok "${TARGET_USER:-$USER} added to docker group (log out/in or 'newgrp docker' to use it)"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
_docker_debian() {
|
|
sudo_ install -m 0755 -d /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg \
|
|
| sudo_ gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
sudo_ chmod a+r /etc/apt/keyrings/docker.gpg
|
|
local codename; codename="$(. /etc/os-release; echo "$VERSION_CODENAME")"
|
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
|
|
https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $codename stable" \
|
|
| sudo_ tee /etc/apt/sources.list.d/docker.list >/dev/null
|
|
sudo_ apt-get update -y
|
|
sudo_ apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
} |