Serveurs Vps Docker Ubuntu

Installer Docker sur Ubuntu et Debian

Installer Docker sur Ubuntu et Debian via le dépôt officiel, vérifier Engine et Compose, puis sécuriser les droits et les ports publiés.

Julien Bernard
Julien Bernard

Serveurs dédiés, infogérance et migration

Il couvre les serveurs dédiés, l'infogérance, le stockage, la supervision et les plans de sortie.

8 min de lecture

Pour installer Docker sur Ubuntu ou Debian, utilisez le dépôt APT officiel, choisissez la branche de votre distribution, installez Engine avec Compose et Buildx, puis vérifiez le service et le conteneur de test. Avant d’exposer un port, contrôlez aussi le pare-feu et les droits du compte.

La commande d’installation n’est pas la partie difficile. Le risque commence quand on mélange des paquets de dépôts différents, quand on confond Docker Engine avec Docker Desktop ou quand on rend un service public sans comprendre le chemin réseau créé par Docker. Un serveur reste un atelier : chaque outil doit avoir sa place.

Ce guide privilégie une installation lisible et réversible. Il convient à un serveur Ubuntu ou Debian administré par une personne qui sait restaurer un instantané, relire une commande et vérifier les ports ouverts.

Avant l’installation, identifiez exactement l’hôte

Commencez par le système réel. Un serveur annoncé comme compatible Ubuntu peut utiliser une image dérivée, un noyau imposé ou une architecture différente de celle attendue. Affichez les informations fournies par le système au lieu de déduire la distribution à partir du nom commercial du VPS.

cat /etc/os-release
dpkg --print-architecture
uname -r

Relevez la valeur de la distribution et son nom de version. La branche du dépôt doit correspondre à Ubuntu sur Ubuntu, et à Debian sur Debian. Une distribution dérivée peut fonctionner, mais elle demande de connaître la version mère correspondante. L’installation à l’aveugle transforme une mise à jour banale en panne de dépendances.

Contrôlez ensuite les paquets présents. Docker Engine distribué par Docker peut entrer en conflit avec docker.io, d’anciennes variantes de Compose, containerd ou runc déjà installés par une autre source.

dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc

Ne supprimez pas mécaniquement tout ce qui apparaît. Sur un hôte déjà utilisé, commencez par inventorier les conteneurs, les volumes et les unités systemd qui dépendent de ces paquets. La sauvegarde fait partie de l’installation, surtout lorsque Docker existait déjà sous une autre forme.

Situation observéeDécision raisonnableRisque à contrôler
Hôte neuf, aucun paquet conflictuelInstaller depuis le dépôt officiel DockerChoisir la bonne distribution
docker.io déjà utiliséPréparer la migration avant de changer de sourceVersions, données et redémarrage
Serveur de productionTester la procédure sur un clone ou un instantanéInterruption et retour arrière
Compte sans privilèges d’administrationÉtudier le mode rootlessLimites réseau et stockage

Installer Docker sur Ubuntu

La méthode recommandée pour un serveur est le dépôt APT officiel. Elle rend les mises à jour visibles par le gestionnaire de paquets et évite le script d’installation rapide, pratique pour un laboratoire mais trop opaque pour une machine de production.

Ajoutez d’abord la clé et la source Ubuntu. Le format deb822 ci-dessous sépare clairement l’URI, la version, l’architecture et la clé utilisée pour vérifier les paquets.

sudo apt update
sudo apt install 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

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<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

Avant d’installer, lisez le résultat de la dernière mise à jour. Une erreur de signature, de nom de version ou d’architecture n’est pas un détail à contourner. Corrigez la source ; ne désactivez pas la vérification cryptographique pour faire disparaître le message.

Installez ensuite Engine, son client, containerd, Buildx et le module Compose depuis la même source.

sudo apt install docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

Installer Docker sur Debian

La procédure Debian suit la même logique, mais l’URI du dépôt et le nom de version ne sont pas ceux d’Ubuntu. Copier le bloc Ubuntu puis changer un mot au hasard est une excellente manière d’obtenir un système impossible à mettre à jour proprement.

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg \
  -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

Sur Debian testing ou une distribution dérivée, le nom automatique peut ne pas correspondre à une branche publiée par Docker. Dans ce cas, identifiez la version Debian de référence et utilisez son nom en connaissance de cause. Si cette correspondance reste incertaine, arrêtez-vous : un dépôt approximatif est une dette de maintenance immédiate.

Vérifier Engine, Compose et le service

Une installation terminée par APT ne prouve pas que le démon répond. Vérifiez chaque couche séparément : l’unité systemd, la communication entre le client et le démon, le module Compose, puis l’exécution d’un conteneur jetable.

sudo systemctl status docker --no-pager
sudo docker version
sudo docker compose version
sudo docker run --rm hello-world

Le dernier test télécharge une petite image, crée un conteneur, affiche son message puis supprime le conteneur. Il valide davantage qu’une simple version du client, mais il ne prouve ni la sécurité du serveur ni le bon fonctionnement de votre application.

En cas d’échec, lisez le journal avant de réinstaller. Une réinstallation répétée masque rarement un problème de socket, de configuration ou de réseau.

sudo journalctl -u docker --since today --no-pager

Le dépôt n’est donc que le début : identifiez le système, installez, vérifiez, puis sécurisez avant la première charge.

Parcours en quatre contrôles pour installer Docker puis vérifier les droits et les ports
Une installation utile se termine par la vérification du service, des droits et de l’exposition réseau.

Sécuriser les droits avant le premier conteneur utile

Par défaut, l’usage du client Docker passe par des privilèges d’administration. Il est possible d’ajouter un compte au groupe docker, mais ce groupe accorde un niveau de contrôle équivalent à root. Ce n’est pas une commodité anodine à distribuer à tous les comptes interactifs.

sudo usermod -aG docker "$USER"

La nouvelle appartenance prend effet après une reconnexion. Réservez cette option à un compte d’administration maîtrisé. Pour un poste partagé ou un environnement où les utilisateurs ne doivent pas contrôler le démon système, examinez plutôt le mode rootless et ses contraintes avant de choisir.

Le même pragmatisme vaut pour le socket Docker. Ne l’exposez pas directement sur le réseau. Un accès au démon permet de créer des conteneurs privilégiés, de monter des chemins de l’hôte et, dans les faits, de prendre le contrôle de la machine.

Vérifier le pare-feu et les ports publiés

Un port publié par Docker ne suit pas forcément le chemin attendu par ufw. Docker crée ses propres règles pour les réseaux bridge et la traduction d’adresses. Un serveur peut donc accepter du trafic vers un conteneur alors que l’administrateur croit l’avoir bloqué avec une règle ufw classique.

Avant de lancer une application, listez ce que le système écoute et ce que Docker publie réellement.

sudo ss -lntup
sudo docker ps --format 'table {{.Names}}\t{{.Ports}}'
sudo iptables -S DOCKER-USER

N’ouvrez que les ports nécessaires, liez un service interne à l’adresse de boucle locale lorsque c’est possible et placez les règles d’accès au bon endroit pour votre backend de pare-feu. Ne désactivez pas la gestion réseau de Docker sans solution de remplacement, car vous risquez de casser l’isolation et l’accès sortant des conteneurs.

La journalisation mérite aussi une décision. Le pilote par défaut peut faire croître les fichiers de journaux jusqu’à remplir le disque. Sur un serveur durable, prévoyez une rotation ou un pilote adapté avant d’empiler les services. Le disque décide souvent, même lorsque le processeur semble être le sujet du jour.

Diagnostiquer sans recommencer depuis zéro

  • Le dépôt refuse la version. Relisez le fichier os-release, l’URI Ubuntu ou Debian et le nom de branche. N’inventez pas un mélange entre les deux distributions.
  • Le client ne joint pas le démon. Vérifiez l’unité systemd et son journal, puis le socket et les droits du compte.
  • APT signale des conflits. Identifiez la provenance de docker.io, containerd et runc avant toute suppression ; préparez le retour arrière.
  • Le conteneur démarre mais reste inaccessible. Comparez le port publié, l’adresse d’écoute et les règles du pare-feu au lieu de désactiver celui-ci.
  • Le serveur fonctionne puis manque d’espace. Inspectez images, volumes et journaux ; définissez une politique de nettoyage et de rotation adaptée à la charge.

Liste de contrôle

  • Vérifiez la distribution, son nom de version et l’architecture afin d’éviter un dépôt incompatible.
  • Inventoriez les paquets, conteneurs et volumes existants avant de remplacer une installation déjà utilisée.
  • Testez le service, Compose et un conteneur jetable avant de déployer votre application.
  • Contrôlez les droits du compte, les ports publiés et la rotation des journaux avant l’ouverture au trafic.

Une bonne installation Docker ne se résume pas à obtenir une commande qui répond. Elle laisse un dépôt cohérent, un service vérifiable, une frontière de privilèges assumée et une exposition réseau comprise. Demandez le plan de panne avant le premier déploiement : sauvegarde, retour arrière, journaux et responsable de l’intervention. Le reste tient surtout de l’optimisme.

Questions fréquentes

Faut-il utiliser docker.io ou docker-ce ?
docker.io vient des dépôts de la distribution, tandis que docker-ce vient du dépôt maintenu par Docker. Évitez de mélanger les deux sources. Choisissez celle dont vous acceptez le rythme de mise à jour et préparez la migration si une installation existe déjà.
Le script get.docker.com convient-il à un serveur de production ?
Docker le présente comme un outil pratique pour les environnements de test et de développement. Sur un serveur durable, le dépôt APT explicite est plus facile à relire, à reproduire et à intégrer dans une politique de mise à jour.
Puis-je utiliser Docker sans sudo ?
Oui, en ajoutant un compte au groupe docker ou en choisissant le mode rootless. Le groupe docker donne toutefois des privilèges de niveau root ; réservez-le aux administrateurs qui doivent réellement contrôler le démon.
Pourquoi ufw ne bloque-t-il pas toujours un port de conteneur ?
Docker peut détourner le trafic publié avant les chaînes habituellement utilisées par ufw. Vérifiez les ports depuis l’extérieur, comprenez le backend de pare-feu actif et appliquez les restrictions dans la chaîne ou la table adaptée.

Préparé par

Julien Bernard
Julien Bernard

Serveurs dédiés, infogérance et migration

Il couvre les serveurs dédiés, l'infogérance, le stockage, la supervision et les plans de sortie.

Faits vérifiés

HostScout editorial

Articles liés