@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

docker-container-backup-y-recovery-1

Docker container: Backup y Recovery

Docker container: Backup y Recovery

Hoy voy a enseñaros como manejar copias de seguridad de Contenedores en Docker. La idea es hacer copias de seguridad de vuestras imágenes de contenedores.

Presuponemos que el contenedor está generado por una imagen preconfigurada. En nuestro ejemplo, usaremos el contenedor de grafana-xxl, que en un principio ya está en ejecución en el sistema operativo.

Crear copia de seguridad de Docker Container

Lo primero que haremos es listar los contenedores que están corriendo en el sistema:

[raulunzue@centos ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc76fe063875 monitoringartist/grafana-xxl:latest "/run.sh" 4 days ago Up 4 days 0.0.0.0:3000->3000/tcp grafana-xxl

Lo que buscamos es hacer una instantánea de ese contenedor en ejecución, ya que probablemente es el que nos interesa:

[raulunzue@centos ~]$ docker commit -p cc76fe063875 backupgrafanaxxl01
sha256:0e5190bbfceede116beff34a307ce22d6930b5ebdda75e60aea7d5860ab8709f

Si investigáis un poco en el contenedor podéis saber todos los datos del mismo:

[raulunzue@centos ~]$ docker inspect backupgrafanaxxl01
[
{
"Id": "sha256:0e5190bbfceede116beff34a307ce22d6930b5ebdda75e60aea7d5860ab8709f",
"RepoTags": [
"backupgrafanaxxl01:latest"
],
"RepoDigests": [],
"Parent": "sha256:a9c1e4fc80a6b512c9f327ed5ae728d37716ad49201e53a16fd9efdda1b78b0b",
"Comment": "",
"Created": "2019-06-25T11:03:20.811088811Z",
"Container": "cc76fe06387535f8c0984238d5979b86ba9591ea2db0f39fc0fc05897291a6cf",
"ContainerConfig": {
"Hostname": "cc76fe063875",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GRAFANA_ARCHITECTURE=amd64",
"GRAFANA_VERSION=6.2.1",
"GRAFANA_DEB_URL=https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_6.2.1_amd64.deb",
"GOSU_BIN_URL=https://github.com/tianon/gosu/releases/download/1.10/gosu-amd64",
"GF_PLUGIN_DIR=/grafana-plugins",
"GF_PATHS_LOGS=/var/log/grafana",
"GF_PATHS_DATA=/var/lib/grafana",
"GF_PATHS_CONFIG=/etc/grafana/grafana.ini",
"GF_PATHS_HOME=/usr/share/grafana",
"UPGRADEALL=true"
],
"Cmd": null,
"ArgsEscaped": true,
"Image": "monitoringartist/grafana-xxl:latest",
"Volumes": {
"/etc/grafana": {},
"/var/lib/grafana": {},
"/var/log/grafana": {}
},
"WorkingDir": "",
"Entrypoint": [
"/run.sh"
],
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "18.09.6",
"Author": "",
"Config": {
"Hostname": "cc76fe063875",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GRAFANA_ARCHITECTURE=amd64",
"GRAFANA_VERSION=6.2.1",
"GRAFANA_DEB_URL=https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_6.2.1_amd64.deb",
"GOSU_BIN_URL=https://github.com/tianon/gosu/releases/download/1.10/gosu-amd64",
"GF_PLUGIN_DIR=/grafana-plugins",
"GF_PATHS_LOGS=/var/log/grafana",
"GF_PATHS_DATA=/var/lib/grafana",
"GF_PATHS_CONFIG=/etc/grafana/grafana.ini",
"GF_PATHS_HOME=/usr/share/grafana",
"UPGRADEALL=true"
],
"Cmd": null,
"ArgsEscaped": true,
"Image": "monitoringartist/grafana-xxl:latest",
"Volumes": {
"/etc/grafana": {},
"/var/lib/grafana": {},
"/var/log/grafana": {}
},
"WorkingDir": "",
"Entrypoint": [
"/run.sh"
],
"OnBuild": null,
"Labels": {}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 790024499,
"VirtualSize": 790024499,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/14202c8bf378d452347f07d69a4d17d01e7d781f5b2ad9fea3a002b1ae3a7dbb/diff:/var/lib/docker/overlay2/0955b0413fabec8 cb011f85495e99ad715b14ef61f39ff14006a8dc663f0480e/diff:/var/lib/docker/overlay2/5235c4068fc2e7913c29cfda1bc4ef36ed6413e4536b2f0b2c05fe28371f379a/diff",
"MergedDir": "/var/lib/docker/overlay2/3c0d6a2918b4c7f7aaa6de57a062e193237eb7297d97064feaba7a951d593cbb/merged",
"UpperDir": "/var/lib/docker/overlay2/3c0d6a2918b4c7f7aaa6de57a062e193237eb7297d97064feaba7a951d593cbb/diff",
"WorkDir": "/var/lib/docker/overlay2/3c0d6a2918b4c7f7aaa6de57a062e193237eb7297d97064feaba7a951d593cbb/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f94641f1fe1f5c42c325652bf55f0513c881c86b620b912b15460e0bca07cc12",
"sha256:fc3434cd97f444ecbbbf69c152653dea7897de2b4a3f061e1ade8ccc98ba84b6",
"sha256:38b2eaf8ddcd97ecfd98e581606e13f47512267a974fc83bd2e3385227801cba",
"sha256:d686a6c01b25d5820c7d13499d1c9a18367ad27b7d5d43e794c5affc926bdd95"
] },
"Metadata": {
"LastTagTime": "2019-06-25T13:03:20.814415369+02:00"
}
}
]

Listamos las imágenes, y veremos que se ha generado una nueva:

[raulunzue@centos ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
backupgrafanaxxl01 latest 0e5190bbfcee 7 minutes ago 790MB
monitoringartist/grafana-xxl latest a9c1e4fc80a6 3 weeks ago 790MB
nginx alpine dd025cdfe837 6 weeks ago 16.1MB
centos.negu.local:5000/centos latest 9f38484d220f 3 months ago 202MB
centos latest 9f38484d220f 3 months ago 202MB
hello-world latest fce289e99eb9 5 months ago 1.84kB

Ahora exportamos la imagen a un fichero TAR, que luego podremos recuperar:

[raulunzue@centos ~]$ docker save -o backupgrafanaxxl01.tar backupgrafanaxxl01

Podéis llevar ese punto TAR a un recurso externo, ejemplo NFS.

Recuperar imagen Docker Container

Ahora vamos a intentar restaurar la copia de seguridad TAR. Borramos la imagen, por ejemplo:

[raulunzue@centos ~]$ docker rmi backupgrafanaxxl01
Untagged: backupgrafanaxxl01:latest
Deleted: sha256:0e5190bbfceede116beff34a307ce22d6930b5ebdda75e60aea7d5860ab8709f
Deleted: sha256:f926b4815a7f5119102a08366fddf34b1689b9d61eaacbe8ade03e7894a8a1eb

Y cargamos la imagen:

[raulunzue@centos ~]$ docker load -i backupgrafanaxxl01.tar
d686a6c01b25: Loading layer 1.536kB/1.536kB
Loaded image: backupgrafanaxxl01:latest

Y la tendréis en el repositorio para utilizarla nuevamente:

[raulunzue@centos ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
backupgrafanaxxl01 latest 0e5190bbfcee 8 hours ago 790MB
monitoringartist/grafana-xxl latest a9c1e4fc80a6 3 weeks ago 790MB
nginx alpine dd025cdfe837 6 weeks ago 16.1MB
centos.negu.local:5000/centos latest 9f38484d220f 3 months ago 202MB
centos latest 9f38484d220f 3 months ago 202MB
hello-world latest fce289e99eb9 5 months ago 1.84kB

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

¿Te ha gustado la entrada SÍGUENOS EN TWITTER O INVITANOS A UN CAFE?

El Blog de Negu

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

implementar-soc-instalar-thehive-cortex-y-misp-5

Implementar SOC: Instalar TheHive, Cortex y MISP

Implementar SOC: Instalar TheHive, Cortex y MISP En otras entradas hablamos de lo que es …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

uno × 5 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu