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
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!