Files
drt/install_docker_debian.sh
2026-01-03 22:05:49 +07:00

121 lines
3.2 KiB
Bash
Executable File

#!/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 ""