GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

¿Debería ejecutar una base de datos en Docker?

Las cargas de trabajo del servidor en contenedores se están volviendo cada vez más populares y cada vez es más común ver implementaciones de servidores web que se ejecutan en contenedores. ¿Se pueden aplicar los mismos beneficios a las bases de datos?

Docker puede manejar cargas de trabajo con estado

Lo mejor es empezar con una pregunta diferente:C un ¿Incluso ejecuta una base de datos en Docker? En general, Docker no está diseñado para servicios con estado. Uno de los principales puntos de venta de los contenedores es que se pueden detener y poner en marcha a voluntad, generalmente conectándose a una fuente de datos autorizada, como una base de datos, para almacenar su estado. Todos los datos del contenedor son efímeros y se destruyen cuando se elimina el contenedor.

Esto hace que la ejecución de cargas de trabajo con estado sea particularmente desafiante, pero afortunadamente Docker tiene algunas herramientas para manejar el estado:montajes de volumen y enlace. Estos le permiten montar una ubicación en la máquina host en una ubicación en el contenedor, que almacenará datos incluso cuando el contenedor se apague. De esta manera, puede ejecutar contenedores a largo plazo sin preocuparse por la pérdida de datos.

Los montajes de volumen son la forma preferida de manejar la mayoría de los escenarios. Le permiten crear un volumen, que es administrado por Docker:

docker volume create my-volume

Luego monte ese volumen en una ubicación de destino dentro del contenedor:

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

Los montajes de enlace son más simples. Son lo que usan los volúmenes bajo el capó, pero le permiten configurar manualmente la ubicación en el disco host en lugar de administrarlo a través de Docker.

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

En la práctica, usar estos soportes puede ser un poco más complicado. Muchos servicios de Docker administrados, como ECS de AWS o Kubernetes administrados, no le brindan acceso directo al servidor subyacente y, como tal, no podrá realizar conexiones de montaje de enlace directamente. Por lo general, esto se soluciona con un servicio como EFS, que permite montar en contenedores ECS, o con un almacén de datos externo, como una base de datos.

RELACIONADO: Cómo instalar Docker y Docker Compose en Linux

¿Debe elegir Docker para su base de datos?

Docker generalmente no es bueno para manejar el estado. Las cargas de trabajo basadas en Docker generalmente subcontratan este problema a las bases de datos. Siendo una base de datos la solución al problema, ¿es práctico poner su base de datos en Docker?

En gran medida, la respuesta es "no por lo general". Docker ha recorrido un largo camino desde su inicio, y ya no es una idea terrible o "incorrecta" contener las bases de datos. Ciertamente se puede hacer, y tiene algunos beneficios. Sin embargo, para la mayoría de las cargas de trabajo generales, los beneficios no superan las complicaciones.

Para ver por qué, veamos los beneficios que Docker trae a la mesa:

  • Fácil escalado:los servidores se pueden crear y destruir rápidamente para satisfacer la demanda
  • Herramientas de CI/CD más sencillas:las compilaciones automatizadas son triviales
  • Codificación de su infraestructura:todas las bibliotecas subyacentes y la configuración se manejan en Dockerfile

La mayoría de estos no se transfieren exactamente bien a las cargas de trabajo de la base de datos, que a menudo son esfuerzos a largo plazo que favorecen la integridad de los datos por encima de todo. Por lo general, no desea ajustar automáticamente la escala de la mayoría de las bases de datos; por lo general, ellos mismos no reciben actualizaciones periódicas de código y, como tales, no se benefician tanto de ejecutarse en contenedores. Y, si solo está montando una unidad de almacenamiento local de todos modos, ¿por qué no ejecutarla fuera de Docker?

Si está buscando liberarse de las complejidades de administrar bases de datos, Docker no es la herramienta para el trabajo. Es simplemente una complicación innecesaria para una carga de trabajo que puede ejecutarse fácilmente en un VPS estándar. Es probable que le resulte mucho mejor utilizar una base de datos como servicio completamente administrada, como el RDS de AWS. Esto brinda gran parte de la automatización para la que Docker es bueno, sin el dolor de cabeza de hacerlo usted mismo.

El lugar principal donde Docker puede ser útil para las cargas de trabajo de la base de datos es en los entornos de desarrollo. Docker facilita la creación de nuevas bases de datos con una configuración diferente, lo que facilita las pruebas. En producción, sin embargo, las reglas son generalmente más estrictas.


Docker
  1. Cómo ejecutar Nginx en un contenedor Docker:una guía paso a paso

  2. ¿Cómo ejecutar un programa dentro de un contenedor Docker?

  3. Cómo ejecutar MySQL en un contenedor Docker

  4. Introducción a los contenedores Docker

  5. 10 comandos mortales que nunca deberías ejecutar en Linux

¿Qué es Docker Compose y cómo se usa?

Cómo ejecutar una aplicación .NET en Docker

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo ejecutar contenedores Docker

Ejecutar Docker Container en segundo plano (modo separado)