#!/bin/bash # Docker Installation Script for Debian 12 set -e echo "==========================================" echo "Docker Installation for Debian 12" echo "==========================================" echo "" # Check if running as root if [ "$EUID" -ne 0 ]; then echo "Please run with sudo: sudo bash install_docker_debian.sh" exit 1 fi # Detect OS if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID VER=$VERSION_ID echo "Detected OS: $PRETTY_NAME" else echo "Cannot detect OS version" exit 1 fi # Remove old versions echo "" echo "Step 1: Removing old Docker versions (if any)..." apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true # Install prerequisites echo "" echo "Step 2: Installing prerequisites..." apt-get update apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release # Add Docker's official GPG key echo "" echo "Step 3: Adding Docker GPG key..." install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg # Set up Docker repository echo "" echo "Step 4: Adding Docker repository..." echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker Engine echo "" echo "Step 5: Installing Docker Engine..." apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Start Docker service echo "" echo "Step 6: Starting Docker service..." systemctl start docker systemctl enable docker # Add current user to docker group (if not root) if [ -n "$SUDO_USER" ]; then echo "" echo "Step 7: Adding user $SUDO_USER to docker group..." usermod -aG docker $SUDO_USER echo "Note: You'll need to log out and back in for group changes to take effect" fi # Verify installation echo "" echo "Step 8: Verifying Docker installation..." if docker --version; then echo "✓ Docker installed successfully" else echo "✗ Docker installation failed" exit 1 fi if docker compose version; then echo "✓ Docker Compose installed successfully" else echo "✗ Docker Compose installation failed" exit 1 fi # Test Docker echo "" echo "Step 9: Testing Docker..." if docker run --rm hello-world > /dev/null 2>&1; then echo "✓ Docker is working correctly" else echo "⚠ Docker test failed - you may need to log out and back in" fi echo "" echo "==========================================" echo "Installation completed successfully!" echo "==========================================" echo "" echo "Docker version:" docker --version echo "" echo "Docker Compose version:" docker compose version echo "" echo "IMPORTANT: If you're not root, log out and back in for group changes to take effect" echo "" echo "Next steps:" echo "1. Log out and back in (or run: newgrp docker)" echo "2. Test Docker: docker run hello-world" echo "3. Set up test environment: bash test_data/setup_test_environment.sh" echo ""