Respaldo y restauración de contenedores Docker con volúmenes

La primera copia de seguridad de volúmenes de Docker totalmente integrada y automatizada.

Bacula Enterprise es la primera solución de copia de seguridad y recuperación de clase empresarial del mundo que ofrece una copia de seguridad avanzada y automatizada de los contenedores Docker. Su módulo de copia de seguridad de Docker lleva la facilidad de uso de los contenedores a un nuevo nivel. Esta tecnología líder en el mundo se ha actualizado ahora para incluir también la copia de seguridad y recuperación de volúmenes de Docker.

Este módulo está integrado a través de la API oficial de Docker y significa que los usuarios pueden realizar rápida y fácilmente copias de seguridad de varios contenedores Docker sin tener que instalar un agente dentro de cada contenedor. Este módulo de copia de seguridad automatizada de volúmenes Docker externos forma parte de las capacidades generales de Bacula que ofrecen funciones de orquestación. Está disponible en la mayoría de los niveles de suscripción de Bacula Enterprise sin coste adicional durante un periodo de tiempo limitado.

Tanto si su entorno de contenedores desplegados se utiliza para levantar y cambiar aplicaciones monolíticas, como para refactorizar aplicaciones heredadas o construir nuevas aplicaciones distribuidas, los desarrolladores y administradores de sistemas pueden utilizar la tecnología avanzada de Bacula con un nivel de flexibilidad especialmente alto, ya sea a través de la interfaz gráfica de usuario o de la interfaz de línea de comandos de Bacula. Recuerde que este alto nivel de flexibilidad y las posibilidades de personalización son fundamentales en el enfoque de Bacula: maximizar las capacidades del usuario introduciendo una amplia gama de opciones para que logre sus objetivos.

Características del módulo de copia de seguridad del contenedor Docker

  • Copia de seguridad y recuperación de la configuración del contenedor Docker, volúmenes e imágenes
  • Solución totalmente integrada, adherida a la filosofía y metodología de Docker
  • Automatización completa para un rápido despliegue de estrategias de protección de contenedores
  • Integración totalmente eficaz, utilizando la API oficial de Docker
  • Ayuda a la preparación de nuevas imágenes Docker
  • Gratis con las suscripciones de nivel Bronce y superiores (oferta de periodo limitado)
  • Guarda de imágenes, retroceso de imágenes y copia de seguridad de los cambios de imagen
  • Control de grano fino sobre los contenedores e imágenes que se deben respaldar o no
  • Seguridad controlada de imágenes Docker definidas y específicas

Información adicional sobre la copia de seguridad de los contenedores Docker:

¿Por qué el módulo de copia de seguridad de Docker de Bacula es único?

El software Bacula Enterprise está diseñado para que las organizaciones puedan desplegar esta solución de copia de seguridad de Docker para todos sus entornos físicos, virtuales, en la nube y todos los entornos híbridos, independientemente de la arquitectura, todo ello desde una única plataforma.

Una copia de seguridad y recuperación eficaz de Docker es especialmente importante porque cuando la vida de un contenedor termina, puede haber datos en él que se necesitan. Sin embargo, debido a la naturaleza desafiante de los entornos Docker, otras soluciones de copia de seguridad no pueden, a día de hoy, realizar una copia de seguridad simple y eficaz de los contenedores Docker, es más, en casi todos los casos, ni siquiera pueden. Bacula es la única solución que proporciona una copia de seguridad totalmente automatizada de Docker y sus volúmenes de datos.

docker backup architecture

Uso seguro y eficiente de los contenedores Docker

Bacula Enterprise hace que el uso de Docker sea más fiable y cómodo. Incluso es posible hacer una copia de seguridad sólo de las imágenes definidas por Docker, que se pueden utilizar para crear nuevos contenedores cuando sea necesario. Nuestra solución automatizada y escalable fue hecha para soportar las cargas de trabajo tanto de TI como de DevOps que utilizan Docker, SUSE, Openshift o soluciones CaaS.

Los administradores de sistemas y los gestores de DevOps se benefician del alto nivel de control y de la flexibilidad de gestión disponible a través de la interfaz gráfica de usuario o de la interfaz web de Bacula Enterprise al realizar las copias de seguridad de Docker, incluidos sus volúmenes de datos.

 

Descargar prueba Informe sobre las copias de seguridad de Docker

Cuidado con las afirmaciones de otros proveedores

Algunos proveedores de copias de seguridad y recuperación afirman ser capaces de realizar copias de seguridad de Docker, incluidos sus volúmenes. Sin embargo, son extremadamente limitados y se limitan a añadir un contenedor con su servicio de cliente a una aplicación en contenedor, y lo utilizan para hacer una copia de seguridad de los datos específicos y necesarios. Con estas soluciones, no existe un proceso de restauración directo e independiente de la aplicación. Entonces, ¿cómo hacer una copia de seguridad de Docker en este caso? El administrador necesita confiar en una cuidadosa configuración manual, así como entender la relación de las entidades de almacenamiento persistente; a qué aplicación pertenecen, qué contenedores la utilizan, etc. En resumen, se trata de una solución provisional, no de una solución eficaz y rápida.

Sólo Bacula ofrece una solución de copia de seguridad y restauración de Docker totalmente integrada, automatizada y especialmente rápida. Con el módulo avanzado de copia de seguridad y recuperación de Docker de Bacula, los equipos de copia de seguridad no necesitan tener conocimientos sobre el interior de los contenedores, las aplicaciones o las asignaciones de almacenamiento. En su lugar, los entornos Docker son ahora más eficientes gracias a la automatización y, lo que es más importante, guardan los valiosos datos generados por uno o varios contenedores.

Operaciones de copia de seguridad y restauración Docker

Copia de Seguridad del Docker

La copia de seguridad de un solo contenedor Docker consiste en los siguientes sencillos pasos:

  1. Guardar el estado actual del contenedor en una nueva imagen (container commit – snapshot).
  2. Ejecute la utilidad Docker y guarde los datos.
  3. Eliminar la instantánea guardada para liberar los recursos no necesarios.

La copia de seguridad de las imágenes del sistema Docker no hace una instantánea, ya que cada imagen del sistema es una plantilla de sólo lectura utilizada para la creación de contenedores. Las copias de seguridad pueden realizarse para un contenedor en cualquier estado (creado, en ejecución o detenido). El módulo de copia de seguridad de Docker le informará sobre el inicio y la finalización de cada copia de seguridad de un contenedor o imagen:


JobId 127: docker: Start Backup docker Container: myubuntu (4d0a4fadb50d)
JobId 127: dkcommctx: Commit created: myubuntu/4d0a4fadb50d/127:backup
JobId 127: dkcommctx: Commit removed: myubuntu/4d0a4fadb50d/127:backup
JobId 127: docker: Backup of docker Container: myubuntu (4d0a4fadb50d) OK.

El módulo de copia de seguridad de Docker creará un único archivo (.tar) para cualquier contenedor o imagen Docker que se guarde. Dentro de Bacula, estos se representan de la siguiente manera.

  • /@docker/container//.tar para la copia de seguridad del contenedor
  • /@docker/image//.tar para la copia de seguridad de imágenes

Se crearán varios archivos durante una copia de seguridad si se seleccionan varios contenedores o imágenes Docker para la copia de seguridad con un solo trabajo. Los distintos nombres de archivos, como se muestra arriba, permiten localizar el contenedor o archivo de imagen del sistema adecuado para la restauración.
Para listar los contenedores Docker o las imágenes del sistema disponibles, existe un modo de listado, descrito en el capítulo 6.1 en la página 12 del manual de producto.

Restauración de Docker 

El módulo de copia de seguridad de Docker proporciona dos objetivos para las operaciones de restauración:

  • Restaurar al servicio Docker;
  • Restaurar en un directorio local como ficheros de archivo.

Restaurar al servicio Docker

Para utilizar este método de restauración, el where= o where=/ parámetro de un Bacula restore comando se utiliza.

El archivo del contenedor Docker se enviará al servicio Docker y se restaurará como una nueva imagen y luego se creará como contenedor si el parámetro de restauración container_create está set (que es el predeterminado). Si el parámetro de restauración container_create no está establecido entonces cualquier contenedor será restaurado sólo a nivel de imagen y el usuario tiene que crear o
ejecutar el contenedor manualmente. Si se establece el parámetro de restauración container_run (por defecto es «no«) entonces el contenedor restaurado se iniciará inmediatamente después de una restauración exitosa.

El archivo de imagen Docker se cargará en el servicio Docker como la imagen Docker original sobrescribiendo la ya existente. Este es el comportamiento por defecto y puede cambiarse configurando la opción «Replace» del comando de restauración como se desee. Puede omitir la restauración de una imagen Docker ya existente con Replace opción de restore del comando.

El nombre del contenedor por defecto o la etiqueta de la imagen del contenedor pueden cambiarse durante una restauración con el container_defaultnames o container_imageid los parámetros de restauración (véase la sección 4.2 en la página 8).

Restaurar al directorio local

Para utilizar este modo, el where=/some/path Bacula restore parámetro se establece en una ruta completa en el servidor donde está instalado el módulo Docker. Si la ruta no existe, será creada por el Módulo Docker de Bacula.

Instalación del módulo de copia de seguridad de Docker

El agente de Bacula y su módulo de copia de seguridad de Docker tienen que ser instalados en el host para el servicio de Docker. Docker puede estar instalado en diferentes sistemas operativos y distribuciones, por lo que hay que utilizar el Daemon de Archivos de Bacula Enterprise para este sistema operativo y plataforma.

Configuración del módulo de copia de seguridad de Bacula

El módulo se configura utilizando los parámetros del módulo definidos en la sección FileSets Include de la configuración de Bacula Enterprise Director.

Parámetros del módulo de copia de seguridad de Docker

Estos parámetros opcionales del módulo son relevantes sólo para los trabajos de Copia de Seguridad y Estimación:

  • Especifique un contenedor Docker para hacer una copia de seguridad.
    Múltiples container=<. . > parámetros están permitidos. Si no se encuentra un contenedor con <nombre-etiqueta>, se generará un error de trabajo único y la copia de seguridad procederá al siguiente contenedor a menos que abort_on_error se establezca, lo que hará que se aborte el trabajo de copia de seguridad completo. Los nombres de los contenedores Docker (<name-label>) o los ids de los contenedores (<id>) se pueden utilizar para seleccionar los contenedores a respaldar.
  • Especifique una imagen Docker de la que hacer una copia de seguridad.
    Múltiples image=< . . . > parámetros están permitidos. Si no se encuentra una imagen con <repositorio:tag>, se generará un error de trabajo único y la copia de seguridad procederá a la siguiente imagen a menos que abort_on_error se establezca, lo que hará que se aborte el trabajo de copia de seguridad completo. Los nombres del repositorio de imágenes Docker y de las etiquetas (<repository:tag>) o los ids de las imágenes (<id>) pueden utilizarse para seleccionar la imagen requerida para realizar la copia de seguridad. Este parámetro es opcional.
  • Especifique la lista de nombres de contenedores Docker de los que hay que hacer una copia de seguridad utilizando una sintaxis de expresión regular.
    Se seleccionarán para la copia de seguridad todos los contenedores cuyos nombres coincidan con la expresión regular proporcionada. Múltiples include_container=<. . > parámetros pueden ser proporcionados. Si no hay contenedores que coincidan con la expresión de nombre proporcionada, la copia de seguridad pasará al siguiente parámetro o terminará con éxito sin hacer la copia de seguridad de ningún contenedor. La opción abort_on_error parámetro no abortará el trabajo cuando no se encuentre ningún contenedor mediante la coincidencia de nombres.
  • Especifique una lista de nombres de repositorios de imágenes Docker para realizar una copia de seguridad utilizando la sintaxis de una expresión regular.
    Se seleccionarán para la copia de seguridad todas las imágenes cuyo nombre de repositorio coincida con la expresión regular proporcionada. Múltiples include_images=<. . > parámetros pueden ser proporcionados. Si no hay imágenes que coincidan con la expresión del nombre del repositorio proporcionada, la copia de seguridad continuará con el siguiente parámetro o terminará con éxito sin respaldar ninguna imagen. La opción abort_on_error parámetro no abortará el trabajo cuando no se encuentren imágenes que coincidan con el nombre del repositorio.
  • Especifique una lista de nombres de contenedores Docker que se excluirán de la copia de seguridad utilizando la coincidencia de expresiones regulares.
    Todos los contenedores con nombres que coincidan con la expresión regular proporcionada, y seleccionados para la copia de seguridad utilizando el include_container=<. . .> parámetro será excluido. Este parámetro no afecta a los contenedores seleccionados para ser respaldados using container=<. . .> parámetro. Múltiples exclude_container=<. . .> parámetros pueden ser proporcionados.
  • Especifique una lista de nombres de repositorios de imágenes Docker que se excluirán de la copia de seguridad mediante una coincidencia de expresiones regulares.
    Todas las imágenes con nombres de repositorios que coincidan con la expresión regular proporcionada, y seleccionadas para la copia de seguridad utilizando el include_image=<. . .> parámetro será excluido. Este parámetro no afecta a las imágenes seleccionadas para ser respaldadas mediante image=<. . .> parámetro. Múltiples exclude_image=<. . .> parámetros pueden ser proporcionados.

Parámetros de restauración del módulo de copia de seguridad del Docker

Durante una restauración, el módulo de copia de seguridad de Docker utilizará los mismos parámetros opcionales que se establecieron para el trabajo de copia de seguridad y se guardaron en el catálogo. Algunos de ellos pueden modificarse durante el proceso de restauración si es necesario.

container_create: <yes|no> especifica si la restauración de contenedores Docker debe crear automáticamente un contenedor. La opción por defecto es crear los contenedores en la restauración. Si los contenedores van a ser restaurados como imágenes, este parámetro debe establecerse como no.

container_run: <yes|no> especifica si la restauración de contenedores Docker debe crear y ejecutar automáticamente los contenedores restaurados. La opción por defecto es no ejecutar automáticamente los contenedores restaurados. Si se supone que los contenedores deben ejecutarse inmediatamente después de ser restaurados, este parámetro debe establecerse como yes.

Si este parámetro se establece como yes, entonces el parámetro container_create se ignorará el parámetro.

container_imageid: <yes|no> especifica si el módulo Docker debe utilizar los valores de id de imagen para crear o ejecutar contenedores restaurados. El valor por defecto es utilizar los valores del repositorio de imágenes y de las etiquetas para este fin. Este parámetro será ignorado cuando ambos container_create y container_run se establecen en no ya que no se realizará ninguna operación de creación o ejecución de contenedores.

container_defaultnames: <yes|no> especifica si el módulo Docker debe configurar los nombres de los contenedores basándose en los valores originales del nombre del contenedor y del JobId, que es el valor por defecto. Si este parámetro se establece como yes, el servicio Docker configurará los nombres por defecto de los contenedores creados o ejecutados.

Ejemplos de FileSet de Copia de Seguridad del Docker

En el ejemplo siguiente, se hará una copia de seguridad de todos los contenedores e imágenes Docker.


FileSet {
Name = FS_DockerAll
Include {
Plugin = «docker:»
}
}

En este ejemplo, se realizará una copia de seguridad de un único contenedor Docker con nombre «mcache1».


FileSet {
Name = FS_Docker_mcache1
Include {
Plugin = «docker: container=mcache1»
}
}

El mismo ejemplo anterior, pero utilizando el id del contenedor en su lugar:


FileSet {
Name = FS_Docker_mcache1
Include {
Plugin = «docker: container=cd77eb89e59a»
}
}

En el siguiente ejemplo, se realizará una copia de seguridad de todos los contenedores Docker que contengan «ngnix» en sus nombres.


FileSet {
Name = FS_Docker_nginixAll
Include {
Plugin = «docker: include_container=ngnix»
}
}

En este último ejemplo, se hará una copia de seguridad de todos los contenedores Docker, excepto de aquellos cuyos nombres empiecen por «test».


FileSet {
Name = FS_Docker_AllbutTest
Include {
Plugin = «docker: include_container=.* exclude_container=^test»
}
}

Escenarios de restauración de la Docker

Restaurar a un servicio Docker

Para restaurar un contenedor o una imagen en un servicio Docker, el administrador debe ejecutar el comando restore y especificar el comando where parámetro como en este ejemplo:


* restore where=/

y, a continuación, establezca cualquier otro parámetro del módulo de restauración necesario para la restauración. En el siguiente ejemplo de sesión de restauración, el container_run la opción de restauración del plugin se establece en «Yes»:


* restore where=/

Run Restore job
JobName: RestoreFiles
Bootstrap: /opt/bacula/working/docker-test-dir.restore.1.bsr
Where: /
Replace: Always
FileSet: Full Set
Backup Client: docker-test-fd
Restore Client: docker-test-fd
Storage: File1
When: 2018-09-28 14:09:30
Catalog: MyCatalog
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no): mod
Parameters to modify:
1: Level
2: Storage
3: Job
4: FileSet
5: Restore Client
6: When
7: Priority
8: Bootstrap
9: Where
10: File Relocation
11: Replace
12: JobId
13: Plugin Options
Select parameter to modify (1-13): 13
Automatically selected : docker: container=mcache1 abort_on_error
Plugin Restore Options
container_create: *None* (*Yes*)
container_run: *None* (*No*)
container_imageid: *None* (*No*)
container_defaultnames: *None* (*No*)
Use above plugin configuration? (yes/mod/no): mod
You have the following choices:
1: container_create (Create container on restore)
2: container_run (Run container on restore)
3: container_imageid (Use Image Id for container creation/start)
4: container_defaultnames (Use default docker Names on container creation)
Select parameter to modify (1-4): 2
Please enter a value for container_run: yes
Plugin Restore Options
container_create: *None* (*Yes*)
container_run: yes (*No*)
container_imageid: *None* (*No*)
container_defaultnames: *None* (*No*)
Use above plugin configuration? (yes/mod/no): yes

El registro del trabajo de restauración indicará qué contenedor se ha restaurado y qué id de contenedor nuevo se ha creado:


JobId 139: Start Restore Job RestoreFiles.2018-09-28_14.13.31_03
JobId 139: Using Device «FileChgr1-Dev1» to read.
JobId 139: Ready to read from volume «vol001» on File device «FileChgr1-Dev1» (/opt/bacula/archive).
JobId 139: Forward spacing Volume «vol001» to addr=225
JobId 139: docker: docker Container restore: mcache1/b97d4dd88063
JobId 139: End of Volume «vol001» at addr=62177197 on device «FileChgr1-Dev1» (/opt/bacula/archive).
JobId 139: dkcommctx: Successfully run container as: ef48c6b5b867

El nuevo contenedor creado durante la restauración obtendrá un nuevo id de contenedor. Esto se puede comprobar ejecutando un comando como:


# docker ps -a
CONTAINER ID IMAGE CREATED STATUS
ef48c6b5b867 mcache1/b97d4dd88063/139:restore 4 minutes ago Up 4 minutes

Restaurar en el directorio local

Es posible restaurar los datos de las imágenes de contenedor y de las imágenes de plantilla Docker en un archivo sin cargarlos en el servicio Docker. Para ello, la opción where la opción de restauración debe apuntar al directorio local:


* restore where=/tmp/bacula/restores

Por favor, compruebe en el siguiente ejemplo el mensaje «Docker local restore»:


JobId 141: Start Restore Job RestoreFiles.2018-09-28_14.26.34_03
JobId 141: Using Device «FileChgr1-Dev1» to read.
JobId 141: Ready to read from volume «vol001» on File device «FileChgr1-Dev1» (/opt/bacula/archive).
JobId 141: docker: docker local restore: container/mcache1/b97d4dd8806(…)

El registro del trabajo de restauración mostrará que la restauración se realizó en un directorio local. El registro de arriba fue truncado para una visión clara.