99 lines
2.6 KiB
Bash
Executable File
99 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
echo "🛠️ Detecting OS..."
|
|
OS=$(uname -s)
|
|
|
|
is_wsl() {
|
|
grep -qi microsoft /proc/version 2>/dev/null
|
|
}
|
|
|
|
install_docker_linux() {
|
|
echo "🔧 Installing Docker on Linux..."
|
|
|
|
# Remove old versions
|
|
sudo apt-get remove -y docker docker-engine docker.io containerd runc || true
|
|
|
|
# Install required tools
|
|
echo "📦 Installing dependencies..."
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
ca-certificates \
|
|
curl \
|
|
gnupg \
|
|
lsb-release \
|
|
apt-transport-https
|
|
|
|
# Ensure folders exist
|
|
sudo mkdir -p /etc/apt/keyrings /etc/apt/sources.list.d
|
|
|
|
# Add Docker GPG key
|
|
echo "🔑 Adding Docker GPG key..."
|
|
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | \
|
|
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
|
|
|
# Add Docker repository
|
|
echo "📄 Adding Docker repository..."
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
|
|
https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") \
|
|
$(lsb_release -cs) stable" | \
|
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
|
|
# Install Docker
|
|
echo "📦 Installing Docker Engine & Compose..."
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
docker-ce \
|
|
docker-ce-cli \
|
|
containerd.io \
|
|
docker-buildx-plugin \
|
|
docker-compose-plugin
|
|
|
|
if ! is_wsl; then
|
|
echo "🔄 Enabling and starting Docker service..."
|
|
sudo systemctl enable docker
|
|
sudo systemctl start docker
|
|
else
|
|
echo "⚠️ Skipping systemctl steps (running in WSL)"
|
|
fi
|
|
|
|
echo "👥 Adding user '$USER' to docker group..."
|
|
sudo usermod -aG docker "$USER"
|
|
|
|
echo "✅ Docker installed successfully!"
|
|
echo ""
|
|
if is_wsl; then
|
|
echo "🔁 Please restart your WSL session: run 'wsl --shutdown' in PowerShell or close your terminal."
|
|
else
|
|
echo "🔁 Please log out and log back in for the docker group to take effect."
|
|
fi
|
|
}
|
|
|
|
install_docker_windows_message() {
|
|
echo "🪟 Detected Windows system."
|
|
echo "👉 Please install Docker Desktop from: https://www.docker.com/products/docker-desktop/"
|
|
echo "It includes Docker Engine + Compose and integrates with WSL2."
|
|
echo ""
|
|
echo "Make sure to:"
|
|
echo " - Enable WSL2 backend during install"
|
|
echo " - Share your drives if needed (for volume mounting)"
|
|
}
|
|
|
|
case "$OS" in
|
|
Linux)
|
|
install_docker_linux
|
|
;;
|
|
Darwin)
|
|
echo "🍏 macOS detected. Please use Docker Desktop: https://www.docker.com/products/docker-desktop"
|
|
;;
|
|
MINGW*|CYGWIN*|MSYS*|Windows_NT)
|
|
install_docker_windows_message
|
|
;;
|
|
*)
|
|
echo "❌ Unsupported OS: $OS"
|
|
exit 1
|
|
;;
|
|
esac |