Hasta ahora hemos visto diferentes aspectos de la tecnología de contenedores Docker. En el capítulo de hoy hablaremos de cómo realizar copias de seguridad de éstos, además de cómo realizar una eventual restauración.

Realizar copias de seguridad de contenedores

Ya estén encendidos o apagados, podemos realizar respaldos de seguridad de los contenedores. Utilizando la opción «export» empaquetará el contenido, generando un fichero con extensión «.tar» de la siguiente manera:

docker export -o fichero-resultante.tar nombre-contenedor
# o bien
docker export nombre-contenedor > fichero-resultante.tar

Veamos un ejemplo. Primero de todo listaré los contenedores que tengo en el servidor:

[root@centos7 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                     NAMES
bf4d12bda9bf        667fd02ce964        "docker-entrypoint..."   2 weeks ago         Exited (0) 2 weeks ago                             wordpress1
4ecc6becfcb6        b1fe0881b739        "docker-entrypoint..."   2 weeks ago         Up 9 seconds             0.0.0.0:33306->3306/tcp   mariadbtst10

Tal y como se observa, tengo un contenedor encendido que corresponde a un motor de base de datos MariaDB y otro apagado, que corresponde al CMS WordPress. Vamos a realizar la copia de seguridad del que tenemos encendido:

docker export mariadbtst10 > mariadbtst10.back.tar

Con el resultado:

[root@centos7 ~]# docker export mariadbtst10 > mariadbtst10.back.tar
[root@centos7 ~]# ls -ltr
-rw-r--r--  1 root root 401052160 ene  9 18:37 mariadbtst10.back.tar

Restauración de copias de seguridad de contenedores

Hay que tener en cuenta, antes de nada, que no es posible restaurar el contenedor directamente, de forma automática. En cambio, sí podemos crear una imagen, a partir de un respaldo de un contenedor, mediante el parámetro «import» de la siguiente manera:

docker import fichero-backup.tar nombre-nueva-imagen

Veamos un ejemplo:

docker import mariadbtst10.back.tar copiamariadb

Con el resultado:

[root@centos7 ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
copiamariadb            latest              45c318bc7929        About an hour ago   392MB

Copias de seguridad de imágenes

También tenemos la posibilidad de realizar copias de seguridad de imágenes. El proceso se realiza al utilizar el parámetro ‘save‘, que empaquetará el contenido y generará un fichero con extensión «tar«, así:

docker save imagen > imagen.tar
#o bien
docker save -o imagen.tar imagen

Veamos un ejemplo:

[root@centos7 ~]# docker images
hello-world             latest              f2a91732366c        7 weeks ago         1.85kB
debian                  latest              6d83de432e98        2 months ago        100MB
driket54/glpi           latest              9a17476d3cbe        16 months ago       267MB
[root@centos7 ~]# docker save -o debian.tar debian
[root@centos7 ~]# ls -ltr
-rw-------  1 root root 105045504 ene 10 16:47 debian.tar

Restaurar copias de seguridad de imágenes

Por último, que no menos importante. Con el parámetro ‘load’, podemos restaurar copias de seguridad en formato ‘.tar’ y de esta manera recuperar la imagen.

docker load -i fichero.tar

Veamos un ejemplo:

[root@centos7 ~]# docker load -i debian.tar
Loaded image: debian:latest

Apuntes finales

Si queremos eliminar una imagen debemos tener en cuenta que no debe hacer referencia a ningún contenedor. En cualquier caso, se podría forzar su borrado mediante:

docker rmi imagen [parámetros]

Utilizamos:

  • -f , –force : se fuerza la eliminación de una imagen
  • –no-prune : no elimina imágenes padre sin etiquetas

Por hoy lo dejamos aquí. En el próximo artículo hablaremos de «Dockerfile«, que nos permitirá crear nuestras imágenes a medida. Estad atentos.


Los derechos de la imagen de portada: Flickr

3 1 voto
Article Rating
Subscribe
Notificarme de
guest

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

5 Comments
más antiguo
más nuevo más votado
Reacciones en línea
Ver todos los comentarios
Marcelo

Hola muchas gracias por estos artículos sobre Docker.

Me queda duda sobre los beneficios de respaldar de esta forma, según he entendido la información que se pudiera ir generando en contenedores ( como las bases de datos) no es posible recuperarla, si no sólo la imágen que generó ese contenedor más no su nuevo contenido vaya…si es el caso, crear y respaldar un dockerfile sería lo mismo y me ahorraría mucho espacio en disco, no?
Espero alguien pueda darme luz sobre eso.
Gracias!