Il existe plusieurs raisons pour lesquelles les bases de données ne sont pas adaptées au docker et à la conteneurisation :
1. Les données ne sont pas sécurisées
Même si vous souhaitez les mettre. Données Docker sur l'hôte à stocker, il ne peut toujours pas garantir que les données ne seront pas perdues. Les volumes Docker sont conçus autour de la couche d'image Union FS pour fournir un stockage persistant, mais il manque encore de garanties.
Avec les pilotes de stockage actuels, Docker risque toujours de ne pas être fiable. Si le conteneur tombe en panne et que la base de données n'est pas arrêtée correctement, les données peuvent être corrompues.
2. Exigences environnementales pour l'exécution de la base de données
Il est courant de voir des conteneurs SGBD et d'autres services s'exécuter sur le même hôte. Cependant, la configuration matérielle requise pour ces services est très différente.
Les bases de données (en particulier les bases de données relationnelles) ont des exigences d'E/S plus élevées. Généralement, les moteurs de bases de données utilisent des environnements dédiés pour éviter les conflits pour les ressources simultanées. Si vous placez votre base de données dans un conteneur, vous gaspillerez les ressources de votre projet. Parce que vous devez configurer de nombreuses ressources supplémentaires pour cette instance. Dans le cloud public, lorsque vous avez besoin de 34 Go de mémoire, l'instance que vous démarrez doit disposer de 64 Go de mémoire. En pratique, ces ressources ne sont pas pleinement utilisées.
Comment le résoudre ? Vous pouvez concevoir en couches et utiliser des ressources fixes pour lancer plusieurs instances à différents niveaux. La mise à l’échelle horizontale est toujours meilleure que la mise à l’échelle verticale.
3. Problèmes de réseau
Pour comprendre le réseau Docker, vous devez avoir une compréhension approfondie de la virtualisation du réseau. Vous devez également être prêt à faire face aux imprévus. Vous devrez peut-être effectuer des corrections de bogues sans assistance ni outils supplémentaires.
4. État
C'est cool de regrouper des services sans état dans Docker, qui peuvent orchestrer les conteneurs et résoudre les points de défaillance uniques. Mais qu’en est-il de la base de données ? En plaçant la base de données dans le même environnement, elle sera avec état et augmentera les risques de panne du système. La prochaine fois que votre instance d'application ou votre application tombera en panne, cela pourrait affecter la base de données.
5. Un isolement supplémentaire est préjudiciable à la base de données
En fait, je l'ai mentionné dans les deuxième et troisième raisons. Mais j’énumère cela comme une raison distincte parce que je tiens à souligner à nouveau ce fait. Plus nous avons de niveaux d’isolement, plus nous obtenons une surcharge de ressources. Une évolution horizontale facile nous permet d’obtenir plus d’avantages qu’un environnement dédié. Cependant, la mise à l'échelle horizontale dans Docker ne peut être utilisée que pour les services informatiques sans état, pas pour les bases de données.
Nous ne voyons aucune fonctionnalité d’isolation pour la base de données, alors pourquoi devrions-nous la mettre dans un conteneur ?
Tutoriel recommandé : Tutoriel Docker
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!