#!/usr/bin/env bash # Run this ONCE on a fresh Ubuntu host to install Docker + Compose v2 and # add the current user to the `docker` group so subsequent commands don't # need sudo. # # Requires sudo. Idempotent — safe to re-run. # # Usage: # ssh tudisco@host 'bash -s' < install-docker.sh # or: # scp install-docker.sh tudisco@host:~/ # ssh tudisco@host 'bash ~/install-docker.sh' set -euo pipefail echo "==> Updating apt" sudo apt-get update -y echo "==> Installing prerequisites" sudo apt-get install -y --no-install-recommends \ ca-certificates curl gnupg echo "==> Adding Docker's official GPG key" sudo install -m 0755 -d /etc/apt/keyrings if [[ ! -f /etc/apt/keyrings/docker.gpg ]]; then curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg fi echo "==> Adding Docker apt repo" . /etc/os-release echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu ${VERSION_CODENAME} stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null echo "==> Installing Docker Engine + Compose plugin" sudo apt-get update -y sudo apt-get install -y \ docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin echo "==> Adding $USER to docker group" sudo usermod -aG docker "$USER" echo "==> Enabling + starting Docker" sudo systemctl enable --now docker echo echo "==> Versions:" docker --version docker compose version echo echo "✓ Docker installed." echo " IMPORTANT: log out and back in (or run 'newgrp docker') for the" echo " group change to take effect; otherwise 'docker' commands need sudo."