library images imagenes hub dockers container database virtualization docker

database - images - download docker image



¿Tiene sentido dockerize(containerize) bases de datos? (3)

Puedo entender los beneficios que hay detrás de los servicios sin estado de docking, tales como servidores web, servidores de aplicaciones, balanceadores de carga, etc. Si está ejecutando estos servicios en un grupo de máquinas, es muy fácil mover estos contenedores con poca sobrecarga. Pero lo que no entiendo es el propósito de las bases de datos de contenedor? las bases de datos están conectadas a un volumen de datos persistente en un disco duro específico. Debido al estado, no es fácil ni eficiente mover realmente el contenedor de la base de datos. Entonces, ¿alguien puede ver por qué dockerizar una base de datos puede ser útil?


"Entonces, ¿alguien puede ver por qué dockerizar una base de datos puede ser útil en absoluto?"

Buena pregunta Keeto. Una de las principales razones para contener sus bases de datos es para que pueda tener el mismo entorno coherente para toda su aplicación, no solo las partes sin estado, a través de desarrollo, montaje y producción. Un entorno coherente es una de las promesas de Docker, pero cuando su base de datos vive fuera de este modelo, hay una gran diferencia que no se puede tener en cuenta en sus pruebas. Además, al contener su base de datos y el resto de su aplicación, es más probable que pueda mover toda su aplicación entre los proveedores de alojamiento (por ejemplo, de AWS a Google Compute). Si usa Amazon RDS, por ejemplo, incluso si puede mover sus nodos web a Google, no podrá mover su base de datos, lo que significa que depende en gran medida de su proveedor de la nube.

Otra razón para contener los servicios de datos es el rendimiento. Esto es particularmente cierto para los proveedores de servicios (todas las bases de datos como ofertas de servicios, por ejemplo, bases de datos en la nube de rackspace ), porque los contenedores le permiten proporcionar garantías de servicio que no son posibles utilizando la virtualización y ejecutar una base de datos por máquina física es no es financieramente viable. Lo más probable es que no esté ejecutando un servicio de alojamiento de bases de datos, pero esta analogía tiene el mismo sentido si se ejecuta en hardware y desea utilizar contenedores para el aislamiento de procesos, en lugar de VM. Obtendrá un mejor rendimiento para sus bases de datos debido al conocido golpe de E / S que recibe cuando ejecuta una base de datos en una máquina virtual.

No estoy diciendo que deba contener su base de datos, pero estas son algunas de las razones por las que tendría sentido.

Divulgación completa, trabajo para clusterhq, ese nuevo proyecto que Mark O''connor mencionó en su respuesta. Tenemos un proyecto de código abierto llamado Flocker que hace que sea mucho más fácil migrar las bases de datos y sus volúmenes entre los hosts para que los beneficios que mencioné anteriormente no sean completamente superados por los aspectos negativos que usted planteó en su pregunta.


Este es un buen hilo, y el progreso reciente en la clonación de SQL Server agregaría capacidades adicionales al uso de Contenedores con clones. Esto resuelve algunos de los problemas de workign con grandes conjuntos de datos. Revelación completa, trabajo para Windocks, donde lanzamos 2.0 con contenedores de SQL Server con clonación de base de datos integrada.


No estoy seguro de estar de acuerdo con su comentario sobre la eficiencia ... Es mucho más fácil descargar y ejecutar un contenedor de base de datos, en comparación con su instalación nativa. La documentación de la ventana acoplable describe cómo implementar una separación lógica limpia entre un contenedor con estado y sus datos:

Pero ... está en lo cierto de que un contenedor con estado estaría vinculado a su servidor host, a menos que también exista algún mecanismo para transportar los datos.

Una solución obvia es montar un volumen de almacenamiento compartido en todos los hosts que puedan estar ejecutando su base de datos.

El siguiente artículo aborda una solución muy innovadora en la que se utiliza un cliente tipo bittorrent para replicar un contenedor de datos entre hosts.

Finalmente, un nuevo proyecto llamado flocker intenta resolver este problema administrando los contenedores con estado y sus volúmenes de ZFS asociados: