#!/bin/bash set -e echo "Removing old Docker versions..." for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkg || true done # Detect OS if [ -f /etc/debian_version ]; then DOCKER_OS="debian" elif [ -f /etc/lsb-release ]; then DOCKER_OS="ubuntu" else echo "Error: Unsupported OS" exit 1 fi echo "Updating package list and installing dependencies..." sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release echo "Setting up Docker repository..." # Add Docker's official GPG key sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/${DOCKER_OS}/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/${DOCKER_OS} \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null echo "Installing Docker..." sudo apt-get update sudo apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin # Verify installation echo "Verifying Docker installation..." sudo docker --version sudo containerd --version echo "Configuring Docker permissions..." sudo groupadd docker 2>/dev/null || true sudo usermod -aG docker ${SUDO_USER:-$USER} echo "Enabling and starting Docker services..." sudo systemctl enable --now docker.service sudo systemctl enable --now containerd.service echo "Docker setup completed. Please log out and log back in for group changes to take effect."