"Ça marche chez moi !" — Cette phrase a hanté les SysAdmins pendant des décennies. Docker a résolu ce problème en isolant les applications et leurs dépendances dans des conteneurs légers. Ce guide détaillé vous apprendra non seulement à installer Docker, mais aussi à gérer le stockage, le réseau et le cycle de vie de vos conteneurs.
1. Architecture : Comprendre avant de taper
Avant de lancer des commandes, il faut comprendre le vocabulaire :
- L'Image : C'est le "plan de construction" (le moule). Elle est immuable (lecture seule). Exemple : L'ISO d'installation de Windows.
- Le Conteneur : C'est l'instance vivante de l'image. C'est la "maison" construite à partir du plan. On peut la détruire et la reconstruire à l'infini.
- Le Registre (Docker Hub) : C'est la bibliothèque où sont stockées les images.
2. Installation Propre (La méthode officielle)
N'utilisez pas apt install docker.io (souvent périmé). Utilisez le script officiel pour obtenir la dernière version stable.
# 1. Téléchargement du script d'installation automatique
curl -fsSL https://get.docker.com -o get-docker.sh
# 2. Exécution du script
sudo sh get-docker.sh
L'étape critique : Le groupe Docker
Par défaut, le démon Docker tourne en root. Pour ne pas avoir à taper sudo devant chaque commande (ce qui est pénible et dangereux), ajoutez votre utilisateur au groupe dédié :
sudo usermod -aG docker $USER
newgrp docker).
3. Lancer son premier service (Nginx)
Lançons un serveur web. Nous allons décortiquer chaque paramètre, car c'est là que tout se joue.
docker run -d -p 8080:80 --name mon-site nginx:latest
Analyse de la commande :
-d(Detached) : Lance le conteneur en arrière-plan. Sans ça, il occupe votre terminal.-p 8080:80(Port Mapping) : C'est crucial. On relie le port 8080 de votre VPS au port 80 du conteneur.
Accès : http://votre-ip:8080--name mon-site: Donne un nom facile à retenir pour gérer le conteneur plus tard.nginx:latest: Le nom de l'image à utiliser.
4. La Persistance des données (Volumes)
C'est le concept le plus important. Les conteneurs sont éphémères. Si vous supprimez le conteneur, toutes les données à l'intérieur sont perdues.
Pour héberger un site web, on utilise un Bind Mount : on "projette" un dossier de notre VPS à l'intérieur du conteneur.
Exemple pratique : Héberger une page HTML perso
1. Créez un dossier et un fichier index.html sur votre VPS :
mkdir monsite
echo "<h1>Hello Docker</h1>" > monsite/index.html
2. Lancez le conteneur en liant ce dossier :
docker run -d -p 8081:80 \
-v $(pwd)/monsite:/usr/share/nginx/html \
--name site-perso nginx
Désormais, si vous modifiez le fichier index.html sur votre VPS, le changement est instantané sur le site. Si vous supprimez le conteneur, vos fichiers restent sur le VPS.
5. Administration au quotidien
Voici les commandes que j'utilise tous les jours en production :
Voir ce qui tourne
docker ps # Liste les conteneurs actifs
docker ps -a # Liste TOUS les conteneurs (même arrêtés)
Débugger (Logs)
Si un conteneur ne démarre pas, c'est la première commande à taper :
docker logs mon-site
docker logs -f mon-site # Suit les logs en direct (comme tail -f)
Entrer dans un conteneur
Pour explorer les fichiers à l'intérieur du conteneur :
docker exec -it mon-site bash
# Ou 'sh' si bash n'est pas installé (ex: images Alpine)
Le grand nettoyage (Prune)
Docker consomme vite de l'espace disque. Cette commande magique supprime les conteneurs arrêtés, les réseaux inutilisés et les images orphelines.
docker system prune -a
Conclusion
Vous maîtrisez maintenant les bases du Runtime Docker. La prochaine étape logique est d'apprendre Docker Compose, qui permet de décrire toute une infrastructure (Serveur Web + Base de Données) dans un seul fichier texte.