Outils pour utilisateurs

Outils du site


commun:mise_a_jour_des_images_docker

Ceci est une ancienne révision du document !


Mises à jour des images Docker

Dernière mise à jour : août 2026

Stratégie de gestion des versions d'images Docker sur le serveur cahute (192.168.1.9) : tags épinglés + notification des mises à jour via Diun + application manuelle. Objectif : maîtriser ce qui tourne, éviter les mises à jour surprises (notamment Nextcloud et les montées de version majeure).

Principe

Trois règles :

  1. Tags épinglés : chaque service utilise une version précise (ex. v1.13.2), jamais un tag flottant (latest, stable). On sait exactement ce qui tourne et on peut reproduire.
  2. Diun notifie : le conteneur Diun vérifie chaque jour les registres et envoie un email quand une nouvelle version d'une image surveillée est disponible. Il n'applique rien lui-même.
  3. Application manuelle : à réception d'une notif, on modifie le tag dans le docker-compose.yml, on relance, on vérifie.

Pourquoi pas d'auto-update (Watchtower) ? Une mise à jour automatique casse sans prévenir. Nextcloud exige les montées majeures une par une ; un latest qui saute deux versions met le service en rade. Le contrôle manuel est délibéré.

Contrepartie : une version épinglée fige aussi ses failles jusqu'à la prochaine mise à jour manuelle. D'où l'importance de traiter les notifs Diun sans trop tarder.

Versions épinglées (référence)

État validé en août 2026. Ces valeurs sont dans les docker-compose.yml respectifs.

Service Image Tag épinglé Stack
Homepage ghcr.io/gethomepage/homepage v1.13.2 surveillance
Uptime-Kuma louislam/uptime-kuma 1.23.17 surveillance
Dozzle amir20/dozzle v10.6.6 surveillance
lldap lldap/lldap v0.6.3-alpine lldap
Diun crazymax/diun 4.29.0 diun

Stack Diun

  • Compose : /mnt/stockage/docker/compose/diun/docker-compose.yml
  • Config : /mnt/stockage/docker/compose/diun/diun.yml (contient les identifiants SMTP en clair → chmod 600)
  • Données : /mnt/stockage/docker/data/diun (base de suivi des images)
  • Réseau Docker : diun_net

docker-compose.yml

services:
  diun:
    image: crazymax/diun:4.29.0
    container_name: diun
    command: serve
    restart: unless-stopped
    volumes:
      - /mnt/stockage/docker/data/diun:/data
      - /mnt/stockage/docker/compose/diun/diun.yml:/etc/diun/diun.yml:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - TZ=Europe/Paris
      - LOG_LEVEL=info
networks:
  default:
    name: diun_net

diun.yml

watch:
  workers: 10
  schedule: "0 8 * * *"          # vérification quotidienne à 8h00
  firstCheckNotif: false

providers:
  docker:
    watchByDefault: true         # surveille tous les conteneurs en cours d'exécution

notif:
  mail:
    host: mail.infomaniak.com
    port: 587                    # 587 = STARTTLS, 465 = SSL/TLS
    ssl: false                   # true si port 465
    insecureSkipVerify: false
    username: "beafrancois@beafrancois.fr"
    password: "<mot de passe SMTP>"
    from: "beafrancois@beafrancois.fr"
    to: "beafrancois@beafrancois.fr"

Note SMTP (Infomaniak) : le champ from doit être une adresse réellement autorisée sur le compte, sinon l'envoi est refusé. On réutilise l'adresse du compte authentifié.

Note watchByDefault : Diun surveille automatiquement tout conteneur qui tourne, sans label à ajouter. Il lit les tags réellement en cours d'exécution, pas les fichiers compose — un conteneur doit donc être recréé après épinglage pour que Diun surveille le bon tag.

Procédure : appliquer une mise à jour

À réception d'un email Diun signalant une nouvelle version :

  1. Identifier le service et la nouvelle version dans le mail.
  2. Consulter le changelog upstream (surtout Nextcloud, lldap : vérifier s'il y a des étapes de migration ou des breaking changes).
  3. Éditer le tag dans le docker-compose.yml de la stack concernée :
    nano /mnt/stockage/docker/compose/<stack>/docker-compose.yml

    Remplacer l'ancienne version par la nouvelle sur la ligne image:.

  4. Appliquer :
    cd /mnt/stockage/docker/compose/<stack>
    docker compose up -d

    Docker télécharge la nouvelle image et recrée uniquement le conteneur modifié.

  5. Vérifier que le service tourne et répond :
    docker ps --format '{{.Names}}\t{{.Image}}\t{{.Status}}'
    docker compose logs --tail 30 <service>
  6. Mettre à jour la table « Versions épinglées » de cette page.
  7. En cas de problème, revenir en arrière : remettre l'ancien tag dans le compose et relancer docker compose up -d.

Commandes utiles

# Forcer une vérification Diun immédiate (sans attendre 8h)
docker restart diun && docker logs diun --tail 20
 
# Voir les images surveillées et le résultat de la dernière analyse
docker logs diun --tail 30
 
# Lister les versions réellement en cours d'exécution
docker ps --format '{{.Names}}\t{{.Image}}'
 
# Connaître la version d'une image qui tourne (si label présent)
docker inspect --format '{{index .Config.Labels "org.opencontainers.image.version"}}' <conteneur>

Points d'attention

  • Nextcloud est bare-metal, pas dans Docker — il n'est pas surveillé par Diun. Ses mises à jour se gèrent séparément (occ upgrade), une version majeure à la fois.
  • Recréer uptime-kuma (lors d'une mise à jour) le redémarre : les monitors de surveillance (gitea-ioc-watch, cpu-load-watch) clignotent brièvement puis repassent au vert au prochain heartbeat cron (~5 min).
  • Les fichiers de config contenant des secrets (diun.yml) doivent rester en chmod 600.
  • Sauvegardes des compose avant modification : conservées dans /root/ir/ pour les stacks touchées lors de la mise en place.
commun/mise_a_jour_des_images_docker.1785579406.txt.gz · Dernière modification : de francois

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki