dotfiles/scripts/linux-setup_docker.sh

67 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -e
echo "Removing old Docker versions..."
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove -y $pkg || true
done
# Detect OS
if grep -q "Ubuntu" /etc/os-release 2>/dev/null; then
DOCKER_OS="ubuntu"
# Source the os-release file to get variables
. /etc/os-release
# Use UBUNTU_CODENAME with fallback to VERSION_CODENAME
CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME}
elif [ -f /etc/debian_version ]; then
DOCKER_OS="debian"
# Source the os-release file to get VERSION_CODENAME
. /etc/os-release
CODENAME=$VERSION_CODENAME
else
echo "Error: Unsupported OS"
exit 1
fi
echo "Detected OS: ${DOCKER_OS}, Codename: ${CODENAME}"
echo "Updating package list and installing dependencies..."
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
echo "Setting up Docker repository..."
# Add Docker's official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/${DOCKER_OS}/gpg -o /etc/apt/keyrings/docker.asc
sudo 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} \
${CODENAME} stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
echo "Installing Docker..."
sudo apt-get update
sudo apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
# Verify installation
echo "Verifying Docker installation..."
sudo docker --version
sudo containerd --version
echo "Configuring Docker permissions..."
sudo groupadd docker 2>/dev/null || true
sudo usermod -aG docker ${SUDO_USER:-$USER}
echo "Enabling and starting Docker services..."
sudo systemctl enable --now docker.service
sudo systemctl enable --now containerd.service
echo "Docker setup completed. Please log out and log back in for group changes to take effect."