Home > Blog de Apoio e Recuperação > Como fazer o backup de containers Docker? Métodos de backup de containers Docker.

Como fazer o backup de containers Docker? Métodos de backup de containers Docker.

1 Star2 Stars3 Stars4 Stars5 Stars
(15 avaliações, média: 4,07 de 5)
Loading...
Atualizado 16th janeiro 2023, Rob Morrison

Embora o Docker (e todos os containers) sejam tipicamente um pouco mais novos para um ambiente de TI de produção do que a maioria das outras tecnologias, ainda há necessidade de fazer backup deles, suas aplicações e seus dados persistentes. Se um sistema de TI de produção produz dados persistentes, esses dados provavelmente terão algum valor. Pode até ser de importância crítica. Portanto, a salvaguarda desses dados no caso de algum tipo de desastre acontecer, por exemplo como resultado de uma violação de dados ou erro humano, é provavelmente necessária.

Nesse artigo, veremos tanto a capacidade do Docker de criar backups por si só, quanto a capacidade de várias soluções de terceiros para criar backups completos do Docker, como o Bacula Enterprise.

Backup e restauração de container Docker

Esse processo geralmente começa com o commit do container como uma imagem, usando o seguinte comando:

 

# docker commit -p [container-id] backup01
sha256:89682d4xxxxxx

Essa imagem pode ser gravada como um arquivo .tar com outro comando:

 

# docker save -o backup01.tar backup01
# ls -al | grep back
-rw——- 1 root root 178697728 Mar 31 23:35 backup01.tar

O arquivo .tar também pode ser guardado no ponto de montagem do NFS. Uma alternativa para isso é enviar a imagem em questão (backup01) diretamente para seu registro local. Para isso, primeiro teremos que rotular apropriadamente a imagem:

 

# docker tag backup01 localhost:5000/backup-image:v1

Nesse caso “localhost” é o nome do local, e 5000 é o número da porta. Ambos podem ser mudados, se necessário. É também importante lembrar que tanto o nome do rótulo, como do repositório, devem estar em letra minúscula, para que o rótulo seja aplicado corretamente. O processo está completo com o início do comando push:

 

# docker push backup-image:v1

Já que falamos de dois métodos de backup, também haverá dois métodos de restauração. Para restaurar a imagem de backup de um arquivo .tar, você terá que iniciar o seguinte comando:

 

# docker load -i /tmp/backup01.tar

A linha de comando deve mostrar a você as linhas de status subsequentes, se o comando tiver sido inserido corretamente:

 

ff91b8b5abb1: Loading layer [======================>] 2.56 kB/2.56 kB
Loaded image: backup01:latest

Um outro comando, chamado docker run, pode ser usado para criar um container a partir dessa imagem.

Uma imagem enviada pode ser extraída diretamente com um comando relativamente simples:

 

# docker pull localhost:5000/backup-image:v1

Assim como no exemplo anterior, tanto o nome do localhost, quanto o número da porta estão sujeitos a mudanças, se necessário.

Backup e restauração de volume Docker

Outro tipo de backup do Docker é através de volumes, que são fornecedores de armazenamento persistente para containers Docker. Esses volumes precisam ser armazenados para a continuidade dos dados.

Quando se trata de gerenciamento de dados persistentes dentro dos containers Docker em funcionamento, os volumes Docker são a maneira mais recomendada para gerenciar tudo isso. Esse tipo de abordagem oferece várias vantagens diferentes. Por exemplo, os dados que são armazenados no container Docker via volumes ficam efetivamente isolados do resto do sistema de arquivos, tornando muito mais difícil ser afetado por ciberataques em todo o sistema. No entanto, esse tipo de isolamento também dificulta a criação de backups dos volumes Docker.

Além disso, os volumes eliminam a necessidade de se preocupar com a GUI e a UID entre o sistema de containers Docker e o sistema operacional. Os próprios volumes são portáteis quando se trata de diferentes instalações Docker, o que significa que não há necessidade de se preocupar com o sistema operacional do host. Ao mesmo tempo, essa abordagem portátil torna possível administrar os volumes Docker com várias ferramentas externas, tais como o armazenamento baseado em buckets, NFS, etc.

Uma vez que os volumes Docker são extremamente necessários para criar diferentes containers Docker com dados persistentes, é natural que você tenha também backups de volumes Docker. Esse tipo de dado é tão importante quanto qualquer outro dado dentro do seu sistema, se não mais importante.

É claro que o uso de volumes Docker para armazenar dados de containers pode não ser exatamente conveniente, e também há alguns probleminhas aqui e ali. Por exemplo, você teria que aprender vários comandos diferentes para fazer algo tão simples quanto copiar informações do container. Você também teria que conhecer vários comandos para poder pegar um shell em um Docker em funcionamento para poder ver a situação atual.

A totalidade dos dados dos volumes Docker pode ser mais difícil de tornar visível dentro de seu sistema de arquivos centralizado, já que ele funciona de uma maneira ligeiramente diferente dos locais tradicionais de armazenamento. Além disso, você teria que criar backups de volumes Docker para o mesmo propósito que normalmente cria backups de seus dados comuns.

Normalmente, os volumes Docker são administrados pelo daemon do Docker, no entanto, não iremos interagir com ele de forma alguma. A ideia de um backup de volume Docker é obter uma cópia do volume como um arquivo comprimido em um dos diretórios locais. Essa cópia é o backup que estamos procurando.

Nesse exemplo, nosso container em questão se chama dckr-site com o volume chamado dckr-volume. Ele é montado em /var/lib/dckr/content/ e armazena ali todos os dados.

O primeiro passo é parar o container usando o seguinte comando:

 

$ docker stop dckr-site

O próximo passo foca tanto na montagem do container, quanto no backup do conteúdo do volume:

 

$ mkdir ~/backup
$ docker run –rm –volumes-from dckr-site -v ~/backup:/backup ubuntu bash -c “cd /var/lib/dckr/content && tar cvf /backup/dckr-site.tar .”

Nesse cenário:

  • O comando docker run é usado para criar um novo container,
  • O comando –rm diz ao sistema para remover o container uma vez que a operação esteja concluída;
  • –volumes-from dckr-site monta os volumes do container em nosso novo container temporário;
  • bash -c “cd /var/lib/dckr/content && tar cvf /backup/dckr-site.tar” cria um backup a partir de todo o conteúdo do diretório /backup/

O processo de recuperação desses backups não é tão complicado assim. Ele começa com a criação de um novo volume com o seguinte comando:

 

$ docker volume create dckr-volume-2

Então você pode usar o seguinte comando para restaurar o volume de um container temporário em um arquivo .tar:

 

$ docker run –rm -v dckr-volume-2:/recover -v ~/backup:/backup ubuntu bash -c “cd /recover && tar xvf /backup/dckr-site.tar”

É claro que você terá que montar esse novo volume no novo container para que ele funcione corretamente:

 

$ docker run -d -v dckr-volume-2:/var/lib/dckr/content -p 80:2368 dckr:latest

Se o procedimento for feito corretamente, todo o estado da aplicação deve ser restabelecido. É importante mencionar que esse método não deve ser usado como uma única fonte de backup, uma vez que os dados de backup ainda são armazenados no host e, portanto, seriam perdidos em caso de perda de dados ou desastre que afete também o host.

Backup e restauração do Docker com o Bacula Enterprise

O Bacula Enterprise utiliza sua capacidade modular para permitir a integração nativa com vários sistemas e serviços, inclusive o Docker. O módulo Docker do Bacula fornece muitos recursos adicionais úteis junto com os módulos principais de backup e recuperação.

O backup do Docker com o Bacula Enterprise consiste em três passos simples:

  1. O estado atual do recipiente é salvo para a nova imagem
  2. O utilitário do Docker é executado e os dados são salvos
  3. O snapshot é retirado para liberar o espaço

Esse backup pode ser feito para um container em qualquer estado, e o software Bacula mostra o status do processo de backup a cada passo. Cada backup de imagem do container significa mais um arquivo .tar salvo. Os backups das imagens são mantidos no diretório /@docker/image//.tar, e os backups dos containers são mantidos no diretório /@docker/container//.tar.

O processo de restauração dos backups do Docker com o Bacula Enterprise é um pouco mais complicado e pode ser feito de duas maneiras diferentes:

  • Restaurar para o diretório local que utiliza o parâmetro do Bacula where=/some/path para indicar o caminho completo para que o backup seja restaurado como um arquivo (ou arquivos);
  • E restaurar para o serviço Docker, o que significa que os dados de backup seriam restaurados com o comando where= como o novo container, sem arquivá-lo em primeiro lugar.

A personalização do processo de restauração também está disponível através de vários parâmetros diferentes, como container_create, container_run, entre outros.

No momento em que escrevo, o Bacula é uma das poucas (ou a única) solução de backup e recuperação de nível corporativo que pode fazer um backup completo e abrangente de um ambiente Docker. Entretanto, a disponibilidade de outras soluções especializadas de backup para Docker, combinadas com a própria solução Docker, juntamente com o módulo Docker do Bacula, possibilitam uma grande variedade de escolhas disponíveis para os gerentes de TI que procuram uma maneira de salvaguardar a implantação de sua produção Docker.

Sobre o autor
Rob Morrison
Rob Morrison é o diretor de marketing da Bacula Systems. Ele começou sua carreira de marketing de TI na Silicon Graphics, na Suíça, e desempenhou intensamente várias funções de administração de marketing por quase 10 anos. Nos 10 anos seguintes, Rob também ocupou vários cargos de administração de marketing na JBoss, Red Hat e Pentaho, assegurando o crescimento da participação no mercado dessas empresas reconhecidas. Ele é formado pela Universidade de Plymouth e tem um diploma de honras em mídia digital e comunicação, além de ter feito um programa de estudos no exterior.
Deixe um comentário

Seu e-mail não será publicado. Os campos obrigatórios estão marcados com *

Como fazer o Backup e Restauração do Docker? Download do Whitepaper