59 lines
1.7 KiB
Bash
Executable File
59 lines
1.7 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 [ -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..."
|
|
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} \
|
|
$(. /etc/os-release && echo "$VERSION_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."
|