L'article explique comment l'auteur a finalement compris Docker et Kubernetes en les abordant de manière pratique. Docker est présenté comme un outil permettant d'empaqueter une application et ses dépendances dans un conteneur portable, assurant ainsi qu'elle fonctionne de la même manière partout. Kubernetes, quant à lui, est décrit comme un système de gestion de ces conteneurs, permettant de coordonner plusieurs services, de les maintenir en fonctionnement et de les mettre à l'échelle selon les besoins. L'auteur souligne que comprendre ces technologies est devenu plus simple en les utilisant pour résoudre des problèmes concrets plutôt qu'en essayant de mémoriser du jargon technique.
L'option metrics-addr de Docker permet d'exposer les métriques de performance et d'utilisation des ressources via un endpoint HTTP sur le port 9323, offrant ainsi un accès à des informations détaillées sur l'environnement Docker. Ces métriques, formatées pour Prometheus, incluent des données sur l'utilisation du CPU, de la mémoire, du disque et du réseau par conteneur, ainsi que des informations sur l'état du démon Docker et les performances des opérations. Cette fonctionnalité est particulièrement utile pour la supervision d'infrastructure, l'alerting automatisé et l'analyse de tendance, bien qu'elle nécessite des outils complémentaires pour une visualisation et une gestion avancées des données.
La fonctionnalité live-restore de Docker permet aux conteneurs de continuer à fonctionner normalement pendant le redémarrage du démon Docker, évitant ainsi les interruptions de service. Cela est particulièrement utile pour les mises à jour de sécurité et la maintenance planifiée, car cela découple les conteneurs du cycle de vie du démon, les maintenant actifs sous la supervision du noyau Linux. Cependant, cette fonctionnalité ne protège pas contre les redémarrages du système d'exploitation ou les pannes matérielles, et certaines fonctionnalités Docker sont limitées pendant le redémarrage.
L'article explique comment Docker utilise par défaut le pilote json-file pour stocker les logs, ce qui peut entraîner des problèmes d'espace disque si non configuré correctement. Il propose des solutions pour configurer et limiter la taille des fichiers de logs via le fichier /etc/docker/daemon.json et présente divers pilotes de logs comme syslog, journald, et des solutions plus avancées comme Splunk ou AWS CloudWatch Logs pour des environnements critiques. Enfin, l'article souligne l'importance des bonnes pratiques telles que la rotation des logs, l'étiquetage, et la centralisation pour une gestion efficace des logs dans Docker.
L'article explique comment Docker utilise un système de stockage en couches, où chaque instruction dans un Dockerfile crée une nouvelle couche en lecture seule, avec une couche supérieure en lecture-écriture pour les conteneurs en fonctionnement. Il aborde les différents pilotes de stockage disponibles, comme overlay2, recommandé pour les distributions Linux modernes, et propose des conseils pour optimiser l'espace disque, comme l'utilisation d'images légères et la configuration de cron jobs pour le nettoyage périodique. Enfin, il souligne l'importance d'une bonne gestion des données persistantes dans un environnement de conteneurs éphémères.
L'article explique la configuration des réseaux par défaut dans Docker, qui crée automatiquement trois réseaux : bridge, host, et none. Il aborde la résolution des conflits d'adresses IP en modifiant le fichier /etc/docker/daemon.json et en redémarrant Docker. L'article détaille également les différents types de réseaux disponibles dans Docker, comme macvlan pour les réseaux physiques et overlay pour les clusters Swarm, tout en offrant des bonnes pratiques pour une gestion efficace des réseaux Docker.
L'article présente des choses à ne plus faire avec Docker :
- mettre le champ "version" dans le fichier compose
- ne pas mettre de "healthchecks"
- être root par défaut
- ne avoir de .dockerignore
- avoir des Dockerfiles en une seule étape surchargée -> il faut utiliser les builds en plusieurs étapes
- des builds manuels sans cache, il y a même la possibilité de faire du hot reload
Docker peut servir aussi bien en développement local qu'en production.
DDEV propose des environnements de développement PHP basés sur Docker. L'auteur montre comment s'en servir pour Symfony / Vue
L'article présente une stratégie Docker éprouvée pour déployer des applications Symfony avec Apache, MySQL et OpenSearch. L'auteur partage son setup personnel utilisant un Dockerfile
et docker-compose
, optimisé pour la production et incluant des ajustements spécifiques à Symfony. L'article met en avant les avantages de Docker pour PHP, notamment la définition de l'infrastructure en tant que code, éliminant ainsi les problèmes de reproductibilité des bugs entre différents environnements
.
L'article explore des fonctionnalités avancées de Docker souvent méconnues mais puissantes pour améliorer les workflows DevOps et renforcer la sécurité des déploiements.
-
SBOM et l’analyse avec Trivy : Générez des inventaires de composants logiciels (SBOM) et analysez-les avec Trivy pour détecter les vulnérabilités dans vos images Docker.
-
Multi-architecture avec Docker et Buildx : Créez des images Docker compatibles avec plusieurs architectures (AMD, ARM, etc.) en une seule commande grâce à Docker Buildx.
-
Signature des images Docker avec Sigstore : Signez et vérifiez vos images Docker avec Sigstore et Cosign pour garantir leur intégrité et provenance.
-
OCI Registry et ORAS : Utilisez ORAS pour pousser et récupérer des artefacts OCI sur des registries, au-delà des images Docker, pour une gestion standardisée et sécurisée des artefacts.
Ces fonctionnalités montrent l'évolution de Docker vers une plateforme plus sécurisée et flexible, adaptée aux besoins des environnements DevOps modernes.
L'article explore les tendances actuelles en matière d'auto-hébergement, en mettant l'accent sur l'utilisation des conteneurs et des outils de gestion associés. L'auteur partage son expérience avec diverses solutions comme Docker, Podman, et Kubernetes, ainsi que des interfaces web telles que Portainer et Dockge pour gérer les conteneurs, et des outils comme Pangolin et Nginx Proxy Manager pour les proxys inverses et VPN.
L'article explique Docker et les conteneurs en les comparant à des pancakes. Sans Docker, les applications partagent le même serveur, créant des conflits comme mélanger tous les ingrédients dans une seule cuisine. Docker isole chaque application dans un conteneur, assurant une isolation totale et évitant les conflits. Les images Docker sont des recettes, et les conteneurs des pancakes en cours de cuisson. Docker Compose gère plusieurs conteneurs, les volumes conservent les données, et les réseaux facilitent la communication entre conteneurs. L'article souligne les avantages de Docker pour le déploiement et la gestion des applications.
L'article explique comment filtrer les conteneurs Docker en entrée et en sortie sur une machine Debian utilisant Firewalld et Salt. Voici un résumé succinct :
-
Objectif : Filtrer l'accès aux conteneurs Docker en utilisant les "zones" et "policies" de Firewalld.
-
Problématique : L'intégration de Firewalld avec Docker ne permet pas un filtrage granulaire des conteneurs. La solution proposée est de désactiver l'intégration iptables dans Docker et de configurer Firewalld pour gérer la publication des conteneurs.
-
Prérequis : Un serveur Salt avec les formules
docker-formula
etfirewalld-formula
. -
Configuration :
- Exemple de configuration Salt pour déployer une image Docker de Shaarli et filtrer les accès.
- Configuration de Firewalld pour gérer les zones et les politiques de filtrage.
-
Commandes Utiles :
- Commandes pour lister les zones et politiques Firewalld, ainsi que pour vérifier les configurations de nftables et iptables.
L'article fournit des exemples de configurations et des commandes pour mettre en place ce filtrage.
Tout est dans le titre
Tout est dans le titre
Pour être complet, docker fournit PHP8.3, MariaDB, Mailpit, nginx et PhpMyAdmin
Tout est dans le titre
Tout est dans le titre - l'auteur migre de Docker vers Kubernetes
Tout est dans le titre