Add Docker CE installer
This commit is contained in:
@@ -18,13 +18,14 @@ Ce depot contient un script interactif permettant de configurer les premiers par
|
|||||||
|
|
||||||
Chaque partie est facultative. Il est donc possible de modifier uniquement le hostname, uniquement le reseau, ou les deux.
|
Chaque partie est facultative. Il est donc possible de modifier uniquement le hostname, uniquement le reseau, ou les deux.
|
||||||
|
|
||||||
## 🧰 Fichier principal
|
## 🧰 Scripts disponibles
|
||||||
|
|
||||||
```text
|
| Script | Role |
|
||||||
configure-debian-network.sh
|
| --- | --- |
|
||||||
```
|
| `configure-debian-network.sh` | Configurer le hostname, l'IP statique, la gateway et les DNS |
|
||||||
|
| `install-docker-ce.sh` | Installer Docker CE depuis le depot officiel Docker |
|
||||||
|
|
||||||
Le script cible une installation serveur Debian classique utilisant :
|
Le script reseau cible une installation serveur Debian classique utilisant :
|
||||||
|
|
||||||
- 📄 `/etc/network/interfaces`
|
- 📄 `/etc/network/interfaces`
|
||||||
- ⚙️ le service `networking`
|
- ⚙️ le service `networking`
|
||||||
@@ -32,13 +33,15 @@ Le script cible une installation serveur Debian classique utilisant :
|
|||||||
|
|
||||||
Il ne vise pas les postes avec NetworkManager, interface graphique ou gestion reseau desktop.
|
Il ne vise pas les postes avec NetworkManager, interface graphique ou gestion reseau desktop.
|
||||||
|
|
||||||
## 🚀 Utilisation
|
## 🚀 Utilisation reseau
|
||||||
|
|
||||||
|
Configurer la base reseau :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo ./configure-debian-network.sh
|
sudo ./configure-debian-network.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Le script demande les informations une par une :
|
Le script reseau demande les informations une par une :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Nom de la machine (laisser vide pour ne pas modifier):
|
Nom de la machine (laisser vide pour ne pas modifier):
|
||||||
@@ -54,6 +57,39 @@ Exemples de cas d'usage :
|
|||||||
| 🛠️ Modifier hostname et reseau | Renseigner toutes les informations |
|
| 🛠️ Modifier hostname et reseau | Renseigner toutes les informations |
|
||||||
| 💤 Ne rien changer | Laisser hostname et IP vides |
|
| 💤 Ne rien changer | Laisser hostname et IP vides |
|
||||||
|
|
||||||
|
## 🐳 Installation Docker CE
|
||||||
|
|
||||||
|
Installer Docker CE depuis le depot officiel Docker :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ./install-docker-ce.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Installer Docker CE et ajouter un utilisateur au groupe `docker` :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ./install-docker-ce.sh olivier
|
||||||
|
```
|
||||||
|
|
||||||
|
Le script Docker effectue les actions suivantes :
|
||||||
|
|
||||||
|
- 🧹 suppression des anciens paquets Docker conflictuels si presents ;
|
||||||
|
- 🔑 ajout de la cle GPG officielle Docker dans `/etc/apt/keyrings/docker.asc` ;
|
||||||
|
- 📦 ajout du depot APT officiel via `/etc/apt/sources.list.d/docker.sources` ;
|
||||||
|
- 🐳 installation de `docker-ce`, `docker-ce-cli` et `containerd.io` ;
|
||||||
|
- 🧩 installation des plugins `docker-buildx-plugin` et `docker-compose-plugin` ;
|
||||||
|
- ⚙️ activation et demarrage du service `docker`.
|
||||||
|
|
||||||
|
Verification apres installation :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker --version
|
||||||
|
docker compose version
|
||||||
|
systemctl status docker
|
||||||
|
```
|
||||||
|
|
||||||
|
Si un utilisateur est ajoute au groupe `docker`, il doit ouvrir une nouvelle session avant de pouvoir utiliser Docker sans `sudo`.
|
||||||
|
|
||||||
## 🛟 Sauvegardes
|
## 🛟 Sauvegardes
|
||||||
|
|
||||||
Avant modification, le script sauvegarde les fichiers concernes avec un suffixe date :
|
Avant modification, le script sauvegarde les fichiers concernes avec un suffixe date :
|
||||||
@@ -73,6 +109,7 @@ Verification syntaxique :
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
bash -n configure-debian-network.sh
|
bash -n configure-debian-network.sh
|
||||||
|
bash -n install-docker-ce.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Verification manuelle recommandee apres execution :
|
Verification manuelle recommandee apres execution :
|
||||||
|
|||||||
Executable
+185
@@ -0,0 +1,185 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [[ "${EUID}" -ne 0 ]]; then
|
||||||
|
echo "Ce script doit etre lance en root."
|
||||||
|
echo "Exemple: sudo $0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Affiche un message d'information standardise.
|
||||||
|
info() {
|
||||||
|
printf '[INFO] %s\n' "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Affiche un message d'erreur standardise sur stderr.
|
||||||
|
error() {
|
||||||
|
printf '[ERREUR] %s\n' "$*" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Demande une confirmation explicite avant d'installer ou modifier des paquets.
|
||||||
|
confirm() {
|
||||||
|
local answer
|
||||||
|
|
||||||
|
read -r -p "Installer Docker CE depuis le depot officiel Docker ? [y/N]: " answer
|
||||||
|
[[ "${answer}" =~ ^[yY]$ ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Verifie qu'une commande requise est disponible.
|
||||||
|
require_command() {
|
||||||
|
local command_name="$1"
|
||||||
|
|
||||||
|
if ! command -v "${command_name}" >/dev/null 2>&1; then
|
||||||
|
error "Commande introuvable: ${command_name}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Charge les informations de version Debian depuis /etc/os-release.
|
||||||
|
load_os_release() {
|
||||||
|
if [[ ! -r /etc/os-release ]]; then
|
||||||
|
error "Impossible de lire /etc/os-release."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
. /etc/os-release
|
||||||
|
|
||||||
|
if [[ "${ID:-}" != "debian" ]]; then
|
||||||
|
error "Systeme non supporte: ${PRETTY_NAME:-inconnu}. Ce script cible Debian."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${VERSION_CODENAME:-}" ]]; then
|
||||||
|
error "VERSION_CODENAME est introuvable dans /etc/os-release."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Supprime les anciens paquets Docker non officiels qui peuvent entrer en conflit.
|
||||||
|
remove_conflicting_packages() {
|
||||||
|
local packages=(
|
||||||
|
docker.io
|
||||||
|
docker-compose
|
||||||
|
docker-doc
|
||||||
|
podman-docker
|
||||||
|
containerd
|
||||||
|
runc
|
||||||
|
)
|
||||||
|
|
||||||
|
info "Suppression des anciens paquets Docker potentiellement conflictuels."
|
||||||
|
apt-get remove -y "${packages[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Installe les pre-requis necessaires au depot APT officiel Docker.
|
||||||
|
install_prerequisites() {
|
||||||
|
info "Installation des pre-requis APT."
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y ca-certificates curl
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ajoute la cle GPG officielle Docker et le fichier docker.sources.
|
||||||
|
configure_docker_repository() {
|
||||||
|
local architecture
|
||||||
|
|
||||||
|
architecture="$(dpkg --print-architecture)"
|
||||||
|
|
||||||
|
info "Configuration du depot officiel Docker pour Debian ${VERSION_CODENAME} (${architecture})."
|
||||||
|
install -m 0755 -d /etc/apt/keyrings
|
||||||
|
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
|
||||||
|
chmod a+r /etc/apt/keyrings/docker.asc
|
||||||
|
|
||||||
|
cat > /etc/apt/sources.list.d/docker.sources <<EOF
|
||||||
|
Types: deb
|
||||||
|
URIs: https://download.docker.com/linux/debian
|
||||||
|
Suites: ${VERSION_CODENAME}
|
||||||
|
Components: stable
|
||||||
|
Architectures: ${architecture}
|
||||||
|
Signed-By: /etc/apt/keyrings/docker.asc
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Installe Docker CE, ses plugins officiels et containerd depuis le depot Docker.
|
||||||
|
install_docker_packages() {
|
||||||
|
info "Installation de Docker CE."
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y \
|
||||||
|
docker-ce \
|
||||||
|
docker-ce-cli \
|
||||||
|
containerd.io \
|
||||||
|
docker-buildx-plugin \
|
||||||
|
docker-compose-plugin
|
||||||
|
}
|
||||||
|
|
||||||
|
# Active et demarre le service Docker.
|
||||||
|
enable_docker_service() {
|
||||||
|
info "Activation et demarrage du service Docker."
|
||||||
|
systemctl enable --now docker
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ajoute un utilisateur au groupe docker si l'option est demandee.
|
||||||
|
add_user_to_docker_group() {
|
||||||
|
local target_user="$1"
|
||||||
|
|
||||||
|
if [[ -z "${target_user}" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! id "${target_user}" >/dev/null 2>&1; then
|
||||||
|
error "Utilisateur introuvable: ${target_user}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
info "Ajout de ${target_user} au groupe docker."
|
||||||
|
usermod -aG docker "${target_user}"
|
||||||
|
info "L'utilisateur devra ouvrir une nouvelle session pour utiliser Docker sans sudo."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Affiche les versions installees pour confirmer l'installation.
|
||||||
|
show_versions() {
|
||||||
|
info "Versions installees:"
|
||||||
|
docker --version
|
||||||
|
docker compose version
|
||||||
|
}
|
||||||
|
|
||||||
|
# Orchestre l'installation complete de Docker CE.
|
||||||
|
main() {
|
||||||
|
local target_user="${1:-}"
|
||||||
|
|
||||||
|
require_command apt-get
|
||||||
|
require_command curl
|
||||||
|
require_command dpkg
|
||||||
|
require_command systemctl
|
||||||
|
load_os_release
|
||||||
|
|
||||||
|
echo "Installation Docker CE pour Debian ${VERSION_CODENAME}"
|
||||||
|
echo
|
||||||
|
echo "Ce script va:"
|
||||||
|
echo " - supprimer les anciens paquets Docker conflictuels si presents"
|
||||||
|
echo " - ajouter le depot officiel Docker"
|
||||||
|
echo " - installer docker-ce, docker-ce-cli, containerd.io, buildx et compose"
|
||||||
|
echo " - activer et demarrer le service docker"
|
||||||
|
if [[ -n "${target_user}" ]]; then
|
||||||
|
echo " - ajouter l'utilisateur ${target_user} au groupe docker"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
|
if ! confirm; then
|
||||||
|
echo "Annule."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
remove_conflicting_packages
|
||||||
|
install_prerequisites
|
||||||
|
configure_docker_repository
|
||||||
|
install_docker_packages
|
||||||
|
enable_docker_service
|
||||||
|
add_user_to_docker_group "${target_user}"
|
||||||
|
show_versions
|
||||||
|
|
||||||
|
echo
|
||||||
|
info "Installation terminee."
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
Reference in New Issue
Block a user