Lors du déploiement d'applications sur des serveurs, il y a généralement une séparation entre ce que l'application fournit avec elle-même et ce qu'elle attend de la plate-forme (système d'exploitation et paquets installés). L'un des avantages de cette séparation est que la plate-forme peut être mise à jour indépendamment de l'application. C'est utile, par exemple, lorsque des mises à jour de sécurité doivent être appliquées d'urgence aux paquets fournis par la plate-forme sans avoir à reconstruire l'application entière.
Traditionnellement, les mises à jour de sécurité sont appliquées simplement en exécutant une commande du gestionnaire de paquets pour installer les versions mises à jour des paquets sur le système d'exploitation (par exemple "yum update" sur RHEL). Mais avec l'avènement de la technologie des conteneurs, comme Docker, où les images de conteneurs regroupent essentiellement à la fois l'application y la plateforme, quelle est la manière canonique de maintenir à jour un système avec des conteneurs ? L'hôte et les conteneurs ont tous deux leurs propres ensembles indépendants de paquets qui doivent être mis à jour et la mise à jour sur l'hôte ne mettra pas à jour les paquets à l'intérieur des conteneurs. Avec la sortie de RHEL 7, où les conteneurs Docker sont particulièrement mis en avant, il serait intéressant de savoir quelle est la méthode recommandée par Redhat pour gérer les mises à jour de sécurité des conteneurs.
Réflexions sur quelques-unes des options :
- Laisser le gestionnaire de paquets mettre à jour les paquets sur l'hôte ne mettra pas à jour les paquets à l'intérieur des conteneurs.
- Le fait de devoir régénérer toutes les images de conteneurs pour appliquer les mises à jour semble rompre la séparation entre l'application et la plateforme (la mise à jour de la plateforme nécessite un accès au processus de construction de l'application qui génère les images Docker).
- L'exécution de commandes manuelles dans chacun des conteneurs en cours d'exécution semble fastidieuse et les modifications risquent d'être écrasées lors de la prochaine mise à jour des conteneurs à partir des artefacts de la version de l'application.
Aucune de ces approches ne semble donc satisfaisante.