guide · 7 min de lecture
Installer Docker
Le dépôt officiel plutôt que celui d'Ubuntu, le plugin compose, et les six commandes qui suffisent à faire tourner un home lab.
Docker est ce qui rend un home lab tenable. Sans lui, installer six services veut dire six façons de configurer, six manières de mettre à jour, et six occasions de casser le service d'à côté. Avec lui, chaque service vit dans sa boîte, et un fichier texte décrit l'ensemble.
Ce guide part d'un Ubuntu Server fraîchement installé — voir Installer Ubuntu Server si ce n'est pas encore fait. Comptez dix minutes.
Ne prenez pas celui d'Ubuntu
apt install docker.io fonctionne et installe une version empaquetée par
Ubuntu, souvent en retard de plusieurs mois, sans le plugin compose. Le dépôt
officiel de Docker demande cinq lignes de plus, une fois, et vous met sur les
mises à jour du projet lui-même.
C'est la seule décision de ce guide. Le reste est mécanique.
Étape 1 — Retirer ce qui traîne
Sur une machine neuve, cette commande ne trouvera rien. Sur une machine qui a servi, elle évite des conflits de paquets dont les messages d'erreur ne désignent jamais la cause :
for pkg in docker.io docker-doc docker-compose docker-compose-v2 \
podman-docker containerd runc; do
sudo apt remove -y $pkg
done
Vos données et vos images ne sont pas touchées : elles vivent dans
/var/lib/docker, que cette commande ne supprime pas.
Étape 2 — Ajouter le dépôt Docker
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Puis le dépôt lui-même :
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Deux détails qui expliquent pourquoi cette version diffère de la plupart des guides qu'on trouve en ligne :
- Le fichier est un
.sources, pas une ligne dansdocker.list. Docker a basculé sur ce format ; les deux fonctionnent, mais mieux vaut suivre la documentation en cours que celle de 2022. - La ligne
Suitesne contient pas le nom de votre version en dur : elle le lit dans/etc/os-release. Sur une 26.04, ça donneresolute.
Si apt update se plaint de ne pas trouver le dépôt, c'est probablement que
Docker n'a pas encore publié pour votre version d'Ubuntu — cas fréquent dans les
semaines qui suivent une sortie. Vérifiez sur
download.docker.com/linux/ubuntu/dists
que le nom de code y figure. Au 28 juillet 2026, resolute y est, en amd64 et
en arm64.
Étape 3 — Installer
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
Cinq paquets, dont deux qui méritent d'être nommés :
docker-compose-pluginfournit la commandedocker compose, en deux mots. L'anciendocker-composeavec un tiret était un programme Python distinct, aujourd'hui retiré. Un guide qui vous fait taperdocker-compose upa plus de quatre ans, et le reste de ses conseils a vieilli pareil.docker-buildx-pluginsert à construire des images. Vous n'en aurez pas besoin tout de suite ; il est dans la liste parce que son absence produit des avertissements incompréhensibles au premier build.
Étape 4 — Vérifier
sudo docker run hello-world
Docker télécharge une image minuscule, la lance, affiche un paragraphe et s'arrête. Si vous le voyez, tout est en place.
docker --version
docker compose version
La seconde commande est le vrai test : c'est elle qui échoue quand le plugin compose n'est pas installé, et son absence ne se remarque qu'au moment où on en a besoin.
Étape 5 — Se passer de sudo
Par défaut, seul root parle au démon Docker. Pour vous éviter un sudo à
chaque commande :
sudo usermod -aG docker $USER
Déconnectez-vous et reconnectez-vous pour que l'appartenance au groupe soit prise en compte. Une session SSH déjà ouverte ne la verra pas — c'est la cause numéro un du « je viens de faire la commande et ça ne marche toujours pas ».
Une chose à savoir, et la documentation de Docker le dit elle-même : le groupe
docker équivaut à un accès root. Qui peut lancer un conteneur peut monter
n'importe quel répertoire de la machine dedans. Sur un serveur personnel avec un
seul utilisateur, c'est sans conséquence ; sur une machine partagée, ça mérite
d'être su avant d'ajouter quelqu'un au groupe.
Étape 6 — Le premier docker-compose.yml
Le configurateur de ce site vous donne un fichier prêt à l'emploi. Voici sa mécanique, pour savoir ce que vous collez.
Créez un dossier par pile de services :
mkdir -p ~/docker && cd ~/docker
nano docker-compose.yml
services:
exemple:
image: nginx:alpine
container_name: exemple
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./exemple/data:/usr/share/nginx/html
Quatre lignes qui décident de tout :
image— d'où vient le logiciel. Préférez une version explicite (nginx:1.29) àlatestsur ce à quoi vous tenez :latestchange sous vos pieds au prochainpull.restart: unless-stopped— le conteneur repart après un redémarrage de la machine, mais pas si vous l'avez arrêté vous-même. C'est la valeur qu'on veut sur un serveur allumé en permanence.ports—"8080:80"se lit hôte:conteneur. Le premier nombre est celui que vous tapez dans votre navigateur, le second est celui que le logiciel écoute dans sa boîte. On ne change que le premier.volumes—./exemple/dataest un chemin sur la machine, relatif au dossier du fichier. Tout ce qui n'est pas dans un volume disparaît à la première mise à jour du conteneur. C'est la seule erreur de ce guide qui coûte des données.
Puis :
docker compose up -d
-d détache : la commande rend la main et les conteneurs continuent. Sans lui,
fermer le terminal arrête tout.
Les six commandes qui suffisent
docker compose up -d # démarrer, ou appliquer une modification du fichier
docker compose down # arrêter et supprimer les conteneurs
docker compose ps # ce qui tourne, dans ce dossier
docker compose logs -f # les journaux, en continu — Ctrl+C pour sortir
docker compose pull # récupérer les nouvelles versions des images
docker stats # ce que ça consomme, en direct
Mettre à jour une pile, c'est trois commandes dans cet ordre :
docker compose pull
docker compose up -d
docker image prune -f
La dernière supprime les images devenues inutiles. Sans elle, un disque système de 250 Go se remplit en un an de versions que plus rien n'utilise — et l'erreur qui en résulte parle de disque plein, jamais de Docker.
Ce qui va vous arriver, et quoi en faire
permission denied sur les fichiers d'un volume. Le conteneur tourne sous
un utilisateur qui n'est pas le vôtre. La plupart des images acceptent PUID
et PGID dans leur section environment : donnez-leur le résultat de
id -u et id -g.
port is already allocated. Deux services veulent le même port côté hôte.
Changez le premier nombre de ports, jamais le second. sudo ss -tulpn | grep 8080 dit qui l'occupe.
Un conteneur qui redémarre en boucle. docker compose logs le dira. Neuf
fois sur dix, c'est un chemin de volume qui n'existe pas ou une variable
d'environnement obligatoire qui manque.
Le disque qui se remplit. docker system df montre où. docker system prune -a fait le ménage — attention, -a supprime aussi les images
inutilisées, qu'il faudra les retélécharger.
Et ensuite
Vos services tournent, mais seulement depuis chez vous. Pour y accéder de l'extérieur, deux chemins : ouvrir un port sur votre routeur, ou passer par un tunnel qui n'en ouvre aucun — et c'est le second que ce site recommande.
Vidéo
Codeur Libre installe Docker et Docker Compose puis lance un premier conteneur — la partie où l'on voit ce que les commandes produisent réellement.
Rien n'est envoyé à YouTube tant que vous n'avez pas lancé la lecture. Ce site ne dépose aucun cookie qui lui soit propre.Regarder sur YouTube