Files
documentation/scripts/fix_docker.sh
T

90 lines
2.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -e
# Ensure script is run as root
if [[ $EUID -ne 0 ]]; then
echo "This script must be run with sudo or as root."
exit 1
fi
# 1) Remove any old Docker and Docker Compose packages
echo "Removing old Docker packages..."
set +e
apt-get remove -y \
docker docker-engine docker.io docker-ce docker-ce-cli \
containerd runc \
docker-compose
set -e
# Note: The above command may fail if Docker is not installed, which is fine.
# The script will continue to install the latest version.
# 2) Update package index
echo "Updating APT package index..."
apt-get update -y
# 3) Install prerequisite packages
echo "Installing prerequisites..."
apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# 4) Add Dockers official GPG key
echo "Adding Dockers GPG key..."
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# ubuntu or debian?
KIND=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
if [[ "$KIND" != "ubuntu" && "$KIND" != "debian" ]]; then
echo "This script is intended for Ubuntu or Debian systems only."
exit 1
fi
# 5) Set up the Docker APT repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/$KIND \
$(lsb_release -cs) stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
# 6) Update the package index again
echo "Updating APT package index with Docker repo..."
apt-get update -y
# 7) Install the latest Docker Engine, CLI, containerd, and Compose plugin
echo "Installing Docker Engine, CLI, containerd, and Docker Compose plugin..."
apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-compose-plugin
# 8) (Optional) Install legacy docker-compose binary
# Uncomment below if you still need the standalone 'docker-compose' command
# echo "Installing legacy docker-compose binary..."
# COMPOSE_LATEST=$(curl -s https://api.github.com/repos/docker/compose/releases/latest \
# | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
# curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_LATEST}/docker-compose-$(uname -s)-$(uname -m)" \
# -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# 9) Add current user to the 'docker' group (so you can run docker without sudo)
USER_NAME=${SUDO_USER:-$(whoami)}
echo "Adding user '$USER_NAME' to docker group..."
usermod -aG docker "$USER_NAME"
# 10) Enable and start Docker
echo "Enabling and starting Docker service..."
systemctl enable docker
systemctl start docker
# 11) Verify installation
echo "Verifying Docker installation..."
docker --version
docker compose version || echo "Docker Compose plugin installed; use 'docker compose'."
echo "Done! Please log out and back in (or reboot) for group changes to take effect."