Skip to content

Instantly share code, notes, and snippets.

@brahimmachkouri
Last active August 6, 2025 15:27
Show Gist options
  • Select an option

  • Save brahimmachkouri/35538d4dfb9c6baf297cc7b2096ce8e7 to your computer and use it in GitHub Desktop.

Select an option

Save brahimmachkouri/35538d4dfb9c6baf297cc7b2096ce8e7 to your computer and use it in GitHub Desktop.
Ubuntu : Install Docker
#!/usr/bin/env bash
set -euo pipefail
# ---------- Fonctions ----------
cleanup() { [[ -n "${SUDO_LOOP_PID:-}" ]] && kill "$SUDO_LOOP_PID"; }
trap cleanup EXIT
need_cmd() { command -v "$1" &>/dev/null || { echo -e "\e[31m❌ $1 introuvable\e[0m"; exit 1; }; }
need_cmd sudo
sudo -v
# Keep-alive sudo
( while true; do sudo -n true; sleep 60; done ) & SUDO_LOOP_PID=$!
# Quitter si Docker déjà présent
if command -v docker &>/dev/null; then
echo -e "\e[34mℹ️ Docker déjà installé : $(docker --version)\e[0m"
if ! docker info &>/dev/null; then
echo -e "\e[33m⚠️ Docker est installé mais inaccessible sans sudo.\e[0m"
echo -e "\e[36mℹ️ Tu dois te déconnecter/reconnecter ou lancer 'newgrp docker' pour appliquer les permissions.\e[0m"
fi
exit 0
fi
echo -e "\e[34m🔧 Dépôt Docker – $(lsb_release -cs)\e[0m"
sudo apt-get update -qq
sudo apt-get install -yqq ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -qq
sudo apt-get install -yqq docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
echo -e "\e[32m✅ Docker $(docker --version) installé.\e[0m"
# Test de fonctionnement avec sudo
if sudo docker run --rm hello-world &>/dev/null; then
echo -e "\e[32m🚀 Docker fonctionne avec sudo.\e[0m"
else
echo -e "\e[31m❌ Échec du test Docker avec sudo.\e[0m"
exit 1
fi
# Créer le groupe docker s’il n’existe pas
if ! getent group docker >/dev/null; then
echo -e "\e[34m➕ Création du groupe docker\e[0m"
sudo groupadd docker
fi
# Ajouter l'utilisateur au groupe docker si nécessaire
if id "$USER" | grep -vq 'docker'; then
sudo usermod -aG docker "$USER"
echo -e "\e[32m🔑 $USER ajouté au groupe docker.\e[0m"
else
echo -e "\e[34mℹ️ $USER est déjà dans le groupe docker.\e[0m"
fi
# Vérification finale
echo
if groups "$USER" | grep -qw docker; then
echo -e "\e[32m✅ Ton utilisateur est déjà dans le groupe docker.\e[0m"
echo -e "\e[32m➡️ Tu peux utiliser Docker sans sudo.\e[0m"
else
echo -e "\e[33m⚠️ Tu dois te déconnecter/reconnecter pour utiliser Docker sans sudo.\e[0m"
echo -e "\e[36m 👉 Ou exécute : \e[1mexec su -l $USER\e[0m"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment