Aller au contenu

Patcher un hôte Docker

Appliquer les mises à jour de paquets sans coucher les conteneurs.

Principe

Les correctifs de sécurité s'appliquent par défaut, sans validation préalable. Ce qui se vérifie, c'est l'après : quels services dépendaient du paquet mis à jour, et se sont-ils bien relevés.

Les sept hôtes Linux du parc sont patchés la nuit de façon autonome (relevé du 2026-10-06 : vm-claude, vm-docker, vm-addons, vm-agents, vm-compute-01, vm-compute-02, vps-fr-ovh ; la pile de l'hyperviseur elle-même reste en patch manuel) ; les redémarrages, quand ils sont nécessaires, se posent entre 00:05 et 03:00. Un paquet écarté génère une notification qui porte le geste de remplacement, pas seulement l'écart.

Marche à suivre manuelle

HOST="ssh -p <port-ssh> <user>@vm-docker"

# 1. ce qui est en attente
$HOST "sudo apt-get update -qq && apt list --upgradable 2>/dev/null | tail -n +2"

# 2. appliquer
$HOST "sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade"

# 3. un redémarrage est-il nécessaire ?
$HOST "test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs || echo 'aucun redemarrage requis'"

# 4. quels services tournent encore sur des bibliothèques supprimées ?
$HOST "sudo needrestart -b"

apt upgrade peut être un redémarrage de dockerd déguisé

Sur un hôte où le paquet docker-ce est mis à jour, la mise à jour redémarre le démon — et donc, selon la politique de redémarrage, tout ce qui tourne dessus. Sur vm-compute-01, qui porte le GPU et une soixantaine de conteneurs, ça n'est jamais anodin.

Vérifier avant : apt list --upgradable | grep -E 'docker|containerd'.

Contrôle après coup

# aucun conteneur ne doit être resté au tapis
$HOST "docker ps -a --filter 'status=exited' --format '{{.Names}}\t{{.Status}}'"

# et la politique de redémarrage doit être celle du fichier Compose
$HOST "docker inspect \$(docker ps -q) \
        --format '{{.Name}} {{.HostConfig.RestartPolicy.Name}}' | grep -v 'on-failure'"

Une montée de version majeure désactive les dépôts tiers

Un do-release-upgrade désactive les fichiers .list des dépôts tiers en les renommant en .save. Constaté ici : les dépôts Docker et Tailscale sont restés désactivés trois mois, sans aucune alerte — la machine se disait à jour, et l'était, pour les seuls dépôts encore actifs.

Après toute montée de version :

$HOST "ls /etc/apt/sources.list.d/*.save 2>/dev/null"

Ce qui redémarre autre chose que soi

Avant de patcher, se demander qui dépend du service touché. Un exemple concret : redémarrer le conteneur VPN du groupe de téléchargement coupe le réseau de tous les conteneurs qui partagent sa pile réseau — ils ne se relèvent pas seuls, et docker ps les montre en marche.

Dernière vérification de cette page : 2026-09-08