GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Devriez-vous exécuter une base de données dans Docker ?

La conteneurisation des charges de travail des serveurs devient de plus en plus populaire et il devient de plus en plus courant de voir des déploiements de serveurs Web s'exécuter dans des conteneurs. Les mêmes avantages peuvent-ils être appliqués aux bases de données ?

Docker peut gérer les charges de travail avec état

Il est préférable de commencer en posant une question différente :C un vous exécutez même une base de données dans Docker ? En général, Docker n'est pas conçu pour les services avec état. L'un des principaux arguments de vente des conteneurs est qu'ils peuvent être arrêtés et démarrés à volonté, généralement en se connectant à une source de données faisant autorité, comme une base de données, pour stocker leur état. Toutes les données du conteneur sont éphémères et sont détruites lorsque le conteneur est supprimé.

Cela rend l'exécution de charges de travail avec état particulièrement difficile, mais heureusement, Docker dispose de certains outils pour gérer l'état :les montages de volume et de liaison. Ceux-ci vous permettent de monter un emplacement sur la machine hôte à un emplacement dans le conteneur, qui stockera les données même lorsque le conteneur s'arrêtera. De cette façon, vous pouvez exécuter des conteneurs à long terme sans vous soucier de la perte de données.

Les montages de volume sont le moyen préféré de gérer la plupart des scénarios. Ils permettent de créer un volume, qui est géré par Docker :

docker volume create my-volume

Montez ensuite ce volume à un emplacement cible à l'intérieur du conteneur :

docker run --mount source=my-volume,target=/app

Les montages liés sont plus simples. Ce sont ce que les volumes utilisent sous le capot, mais ils vous permettent de définir manuellement l'emplacement sur le disque hôte plutôt que de le gérer via Docker.

docker run ~/nginxlogs:/var/log/nginx

En pratique, l'utilisation de ces supports peut être un peu plus compliquée. De nombreux services Docker gérés, comme l'ECS d'AWS ou Kubernetes gérés, ne vous donnent pas un accès direct au serveur sous-jacent, et en tant que tel, vous ne pourrez pas établir directement des connexions de montage de liaison. Généralement, cela est résolu avec un service comme EFS, qui permet le montage sur des conteneurs ECS, ou avec un magasin de données externe, comme une base de données.

CONNEXE : Comment installer Docker et Docker Compose sur Linux

Devez-vous choisir Docker pour votre base de données ?

Docker n'est généralement pas idéal pour gérer l'état. Les charges de travail basées sur Docker sous-traitent généralement ce problème aux bases de données. Une base de données étant la solution au problème, est-il pratique de mettre votre base de données dans Docker ?

En grande partie, la réponse est "pas habituellement". Docker a parcouru un long chemin depuis sa création, et ce n'est plus une mauvaise ou une mauvaise idée de conteneuriser les bases de données. Cela peut certainement être fait et présente certains avantages. Cependant, pour la plupart des charges de travail générales, les avantages ne l'emportent pas sur les complications.

Pour comprendre pourquoi, examinons les avantages de Docker :

  • Évolutivité facile :les serveurs peuvent être créés et détruits rapidement pour répondre à la demande
  • Outils CI/CD simplifiés :les builds automatisés sont simples
  • Codification de votre infrastructure :toutes les bibliothèques sous-jacentes et la configuration sont gérées dans le Dockerfile

La plupart d'entre eux ne se transfèrent pas exactement bien aux charges de travail de base de données, qui sont souvent des efforts à long terme qui privilégient l'intégrité des données par-dessus tout. Vous ne souhaitez généralement pas mettre à l'échelle automatiquement la plupart des bases de données ; ils ne reçoivent généralement pas eux-mêmes des mises à jour de code régulières et, en tant que tels, ne bénéficient pas autant de l'exécution dans des conteneurs. Et, si vous ne faites que monter un disque de stockage local, pourquoi ne pas l'exécuter en dehors de Docker ?

Si vous cherchez à vous libérer des complexités de la gestion des bases de données, Docker n'est pas l'outil pour le travail. C'est tout simplement une complication inutile pour une charge de travail qui peut facilement s'exécuter sur un VPS standard. Vous ferez probablement bien mieux d'utiliser une base de données en tant que service entièrement gérée, comme le RDS d'AWS. Cela apporte une grande partie de l'automatisation pour laquelle Docker est bon, sans aucun mal de tête de le faire vous-même.

Le principal endroit où Docker peut être utile pour les charges de travail de base de données est dans les environnements de développement. Docker facilite la création de nouvelles bases de données avec une configuration différente, ce qui permet des tests rapides. En production, cependant, les règles sont généralement plus strictes.


Docker
  1. Comment exécuter un programme dans un conteneur Docker ?

  2. Devriez-vous exécuter une base de données dans Docker ?

  3. Comment exécuter MySQL dans un conteneur Docker

  4. Comment exécuter une commande sur un conteneur Docker en cours d'exécution

  5. 10 commandes mortelles que vous ne devriez jamais exécuter sous Linux

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment exécuter une application .NET dans Docker

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment exécuter des conteneurs Docker

Exécuter Docker Container en arrière-plan (mode détaché)