Vous voulez une meilleure isolation et performance?
Faites confiance à l'isolation fournie par votre conteneur Docker. C'est un objectif de conception primaire.
N'ajoutez pas de couches inutiles (c'est-à-dire une machine virtuelle à l'intérieur de laquelle héberger votre conteneur Docker) - l'ajout d'une couche VM entraînerait un impact sur les performances, et vous n'avez pas à le faire. Containerizing MySQL nécessite une réflexion, car il est intrinsèquement dynamique.
Si vous vouliez faire ceci: Je stockerais au moins l'état (données et peut-être config) en dehors du conteneur.
Vous pourriez sortir avec pas conteneuriser MySQL.Je ne pense pas que les bases de données sont un bon moyen pour l'utilisation cas de conteneurisation, parce que:
- ils sont stateful
- mise à l'échelle est pas aussi trivial que « spin une autre instance » (parce que vous devez établir asservissant et synchroniser et stocker beaucoup d'état)
- qu'ils ne subissent pas de mises à jour souvent
- mises à jour ne sont pas aussi trivial que « échange à la nouvelle version du conteneur »
- il y a moins besoin de « l'utilisation la même version dans tous les environnements "(ie les développeurs utilisent localement MariaDB 5.7, malgré la production en utilisant MySQL 5.6 ... c'est plus ou moins bien)
Vous devriez également envisager d'utiliser une base de données gérée telle que Amazon RDS. Je reconnais que vous utilisez un ordinateur haute performance, mais cela vaut la peine de comparer les coûts opérationnels de maintenance et de mise à l'échelle de l'infrastructure. Et oui: Je ferais un conteneur par application Spring Boot, et j'exécuterais directement ces conteneurs. Comme je l'ai dit: faites confiance à l'isolement de Docker - ou au moins vérifiez si elle a été violée, et si c'est un risque acceptable selon votre modèle de menace (et si une VM vous aurait sauvé dans les cas de vulnérabilité signalés).
Quant à où pour déployer ces conteneurs Docker (c.-à-localement sur votre ordinateur rapide, contre le déploiement vers le cloud): dépend si vous souhaitez optimiser les coûts de fonctionnement (il est plus facile de gérer tout sur le nuage et non avoir à interagir avec des machines physiques) ou essayer de tirer le meilleur parti de votre ordinateur rapide (et tout déployer directement sur cet ordinateur).
On peut supposer qu'il existe un moyen de gérer à distance l'orchestration des conteneurs Docker sur votre ordinateur rapide. Cela pourrait vous donner beaucoup d'avantages du déploiement dans le cloud.
Merci pour votre suggestion. Après avoir lu votre réponse et d'autres réponses, j'ai réalisé que je n'ai pas besoin de beaucoup d'isolement. L'ajout d'une VM entre les deux introduit une complexité inutile, et aura également un coût de performance! Sans parler d'une adresse IPv4 :-) Une chose n'est pas sûre, MySql, si j'exécute tout ça sur mon serveur (16 cœurs, 32 threads), comment limiter les core/threads qu'il utilise? –
sonne comme vous pouvez [définir 'max_connections' dans' my.ini'] (https://stackoverflow.com/a/621527/5257399) – Birchlabs
@Brichlabs Merci! –