terminos terminología software sistemas sistema palabras los jerga ingenieros ingeniero ingenieria informacion glosario conceptos computacionales claves basicos backup docker-compose

backup - terminología - ¿Cómo debo hacer una copia de seguridad y restaurar la ventana acoplable llamada volúmenes



terminología de los sistemas de informacion (2)

En realidad, debe hacerse de la misma manera que está escrito en la documentación oficial. El contenedor de volumen de datos almacena sus datos en "raíz virtual", por lo que debe hacer una copia de seguridad con el siguiente comando:

docker run --rm / --volume [DOCKER_COMPOSE_PREFIX]_[VOLUME_NAME]:/[TEMPORARY_DIRECTORY_TO_STORE_VOLUME_DATA] / --volume $(pwd):/[TEMPORARY_DIRECTORY_TO_STORE_BACKUP_FILE] / ubuntu / tar cvf /[TEMPORARY_DIRECTORY_TO_STORE_BACKUP_FILE]/[BACKUP_FILENAME].tar /[TEMPORARY_DIRECTORY_TO_STORE_VOLUME_DATA]

dónde:

  • --rm significa que la imagen creada para este comando de ejecución se limpiará
  • DOCKER_COMPOSE_PREFIX de forma predeterminada es el nombre del directorio de su proyecto
  • VOLUME_NAME es el nombre del contenedor de datos-volumen del archivo de composición
  • TEMPORARY_DIRECTORY_TO_STORE_VOLUME_DATA es un directorio para montar sus datos de volumen
  • TEMPORARY_DIRECTORY_TO_STORE_BACKUP_FILE es un directorio virtualmente asignado a su directorio actual, donde se colocará la copia de seguridad
  • BACKUP_FILENAME - un nombre de archivo de copia de seguridad (lo encuentra en el directorio actual)
  • ubuntu : puedes cambiar el tipo de imagen a otro contenedor con tar :)

Obtener datos de nuevo en el volumen (restaurar):

docker run --rm / --volume [DOCKER_COMPOSE_PREFIX]_[VOLUME_NAME]:/[TEMPORARY_DIRECTORY_STORING_EXTRACTED_BACKUP] / --volume $(pwd):/[TEMPORARY_DIRECTORY_TO_STORE_BACKUP_FILE] / ubuntu / tar xvf /[TEMPORARY_DIRECTORY_TO_STORE_BACKUP_FILE]/[BACKUP_FILENAME].tar -C /[TEMPORARY_DIRECTORY_STORING_EXTRACTED_BACKUP] --strip 1

dónde:

  • TEMPORARY_DIRECTORY_STORING_EXTRACTED_BACKUP es un directorio donde se copiarán los archivos extraídos (esto está vinculado con el volumen y, por lo tanto, escribirá en él)
  • -C - dile a tar donde extraer los contenidos.
  • - tira 1 : elimina los elementos de la ruta de acceso (por ejemplo, el directorio principal si el contenido de la copia de seguridad se encuentra en una carpeta / temp o similar)

Estoy un poco confundido con la funcionalidad de los volúmenes con nombre en un archivo de composición de la ventana acoplable específicamente cuando se trata de hacer una copia de seguridad / restaurar mi aplicación.

En realidad estoy probando este archivo dockercompose:

version: ''2'' services: django: build: context: "{{ build_dir }}/docker/django" depends_on: - db environment: [...] volumes: - code:/data/code - www:/var/www - conf:/data/conf networks: - front - db expose: - "8080" entrypoint: "/init" db: build: context: "{{ build_dir }}/docker/postgres" environment: [...] volumes: - data:/var/lib/postgresql/data networks: - db volumes: data: www: code: conf: networks: front: external: name: "proxy_nw"

Como decía la documentación, traté de usar un volumen con nombre en lugar de un contenedor de solo datos. ¿Pero cómo se supone que debo hacer una copia de seguridad de mis datos?

Con un contenedor de solo datos, habría hecho una docker run --rm --volume-from DOC backup_container save que es realmente fácil.

Ahora leí en este tema que debería usar algo como la docker run --rm --volume data --volume www --volume code --volume conf backup_container save . Esto no es tan simple porque tengo muchas aplicaciones con diferentes tipos y nombres de volúmenes, por lo que significa que mi comando para guardar mis datos tendría que ser diferente para cada aplicación. Se complica el proceso de automatización.

Edición: En realidad, esta sintaxis docker run --volume data --volume www container_image my_command no es correcta. Necesita el punto de montaje dentro del contenedor, por lo que sería docker run --volume data:/somewhere --volume www:/somewhereelse container_image my_command . Así que es aún más complicado de usar con un contenedor de copia de seguridad.

Entonces, ¿cuáles son las mejores prácticas en este caso? ¿Debo usar solo un volumen con nombre para todos mis contenedores?


Finalmente cambié mi enfoque. Analizo los volúmenes de mis contenedores buscando los puntos de montaje y hago una copia de seguridad de todo en una carpeta separada en el tar.

Entonces no estoy usando un contenedor para hacerlo sino un script externo. No sé si es un mejor enfoque pero funciona bien.