#!/usr/bin/env bash # ------------------------------------------------------------------ # Docker + Compose # Source: https://server-installer.de/scripts/docker # Version: v2.1.0 # Last updated: 2026-09-12 # Target OS: Debian 11, Debian 12, Ubuntu 22.04, Ubuntu 24.04 # ------------------------------------------------------------------ set -euo pipefail log() { printf '\033[36m==>\033[0m %s\n' "$*"; } if [[ $EUID -ne 0 ]]; then echo "Please run as root (sudo)." >&2 exit 1 fi # Arguments ADD_USER="" while [[ $# -gt 0 ]]; do case "$1" in --user) ADD_USER="$2"; shift 2 ;; *) echo "Unknown argument: $1" >&2; exit 1 ;; esac done log "Removing conflicting packages" for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove -y "$pkg" >/dev/null 2>&1 || true done log "Adding Docker's official GPG key" apt-get update -qq apt-get install -y -qq ca-certificates curl install -m 0755 -d /etc/apt/keyrings . /etc/os-release curl -fsSL "https://download.docker.com/linux/${ID}/gpg" -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc log "Adding the apt repository" echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \ https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" \ > /etc/apt/sources.list.d/docker.list log "Installing Docker Engine and Compose" apt-get update -qq apt-get install -y -qq docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin systemctl enable --now docker if [[ -n "$ADD_USER" ]]; then usermod -aG docker "$ADD_USER" log "Added $ADD_USER to the docker group (log in again to apply)" fi docker --version docker compose version log "Done."