dotfiles/scripts/linux-setup_docker.sh
2025-02-24 09:51:41 +00:00

64 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
set -e
if [ "$EUID" -ne 0 ]; then
echo "Please run this script as root: sudo $0"
exit 1
fi
echo "Removing old Docker versions..."
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
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..."
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
echo "Setting up Docker repository..."
# Add Docker's official GPG key
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/${DOCKER_OS}/gpg -o /etc/apt/keyrings/docker.asc
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" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
echo "Installing Docker..."
apt-get update
apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
# Verify installation
echo "Verifying Docker installation..."
docker --version
containerd --version
echo "Configuring Docker permissions..."
groupadd docker 2>/dev/null || true
usermod -aG docker ${SUDO_USER:-$USER}
echo "Enabling and starting Docker services..."
systemctl enable --now docker.service
systemctl enable --now containerd.service
echo "Docker setup completed. Please log out and log back in for group changes to take effect."