121 lines
3.2 KiB
Bash
Executable File
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 "" |