Como fazer backup de seus volumes do Docker

0
290

[ad_1]

Os volumes do Docker são usados ​​para armazenar dados persistentes separadamente de seus contêineres. Os dados mantidos em um volume permanecem acessíveis depois que os contêineres são interrompidos, permitindo que contenham cargas de trabalho com estado.

Embora os volumes sobrevivam aos contêineres, isso não é proteção suficiente para aplicativos de produção. Você deve fazer backup de seus volumes antes de recuperá-los após um desastre. A criação de backups de volume regulares garante que você possa restaurar seu ambiente se o host do Docker for comprometido ou os dados forem excluídos acidentalmente.

Gerenciamento de backup de volume

O Docker não possui um mecanismo interno para fazer backup de volumes ou exportar seu conteúdo. Você deve configurar sua própria solução para acessar o volume e copiar seus dados para o destino de backup.

A criação de um contêiner temporário que monta o volume do qual você precisa fazer backup geralmente é a maneira mais fácil de prosseguir. Adicione o --volumes-from bandeira para um docker run comando para montar automaticamente os volumes de um contêiner existente em seu contêiner de backup. Você pode então usar ferramentas como tar S gzip para depositar um arquivo do conteúdo do volume em seu diretório de trabalho.

Aqui está um exemplo completo desta técnica:

# Create a container that stores data in the "mysql_data" volume
docker run -d 
    --name mysql 
    -v mysql_data:/var/lib/mysql 
    -e MYSQL_ROOT_PASSWORD=mysql 
    mysql:8

# Start a temporary container to back up the "mysql_data" volume
docker run --rm 
    --volumes-from mysql
    -v $PWD:/backup-dir 
    ubuntu tar cvf /backup-dir/mysql-backup.tar /var/lib/mysql

a --volumes-from sinalizador significa que o contêiner de backup temporário recebe acesso ao mysql Volumes de contêiner. a /var/lib/mysql diretório dentro do contêiner de backup expõe o conteúdo do volume porque este é o caminho usado pelo mysql recipiente. A tarefa do caminho produzirá um arquivo do seu volume que você pode usar como backup. Ele é depositado em seu diretório de trabalho devido à montagem de ligação configurada pelo -v bandeira.

a --rm sinalizador removerá o contêiner de apoio assim que o comando for concluído. Isso deixa o arquivo em seu diretório de trabalho, pronto para ser movido para armazenamento de longo prazo. Você pode automatizar a criação de backup adicionando o docker run comando como uma tarefa cron.

Restaure seu backup

Você pode usar uma técnica semelhante para restaurar seu backup. Ao substituir o conteúdo de um volume existente, crie outro contêiner temporário com o volume e uma montagem de ligação ao arquivo de backup. Extraia o conteúdo do arquivo para o caminho de montagem do volume.

$ docker run --rm 
    --volumes-from mysql
    -v $PWD:/backup-dir
    bash -c "cd /var/lib/mysql && tar xvf /backup-dir/mysql-backup.tar"

Isso pode ser arriscado se os contêineres estiverem usando ativamente o volume. A substituição de arquivos em uso pode causar erros e comportamento inesperado. você pode usar o docker stop comando para parar temporariamente seus contêineres antes de trazê-los de volta com docker start.

$ docker stop mysql

# Restore the backup
# ...

$ docker start mysql

Crie o volume antes de iniciar seu contêiner se estiver restaurando um backup em um novo host:

$ docker volume create new_volume

Em seguida, monte este volume em seu contêiner temporário:

docker run --rm 
    -v new_volume:/var/lib/mysql
    -v $PWD:/backup-dir 
    ubuntu tar cvf /backup-dir/mysql-backup.tar /var/lib/mysql

Se você iniciar o contêiner do aplicativo com o mesmo volume, terá acesso aos arquivos que restaurou:

docker run -d 
    --name mysql 
    -v new_volume:/var/lib/mysql 
    -e MYSQL_ROOT_PASSWORD=mysql 
    mysql:8

Testar esses procedimentos permite verificar se seus backups poderão ser usados ​​se você enfrentar um desastre.

Volumes de backup diretamente

O procedimento descrito acima é a maneira recomendada de fazer backup de volumes do Docker. No entanto, algumas situações podem ser melhor atendidas copiando diretamente o conteúdo de onde os volumes estão armazenados para o sistema de arquivos do host.

Você normalmente encontrará o conteúdo de seus volumes em /var/lib/docker/volumes. Cada volume tem seu próprio subdiretório, como /var/lib/docker/volumes/mysql. Dentro deste caminho de nível superior, você encontrará um _data pasta contendo todos os arquivos armazenados no volume.

arquivar o /var/lib/docker/volumes O diretório pode ser uma maneira conveniente de fazer backup rápido de tudo em seu host. você terá que usar sudo embora porque tudo neste caminho é propriedade de root.

Fazer backup de volumes dessa maneira para uso regular não é recomendado porque não é portátil entre instalações. O sistema de driver de volume do Docker significa que os dados de volume não serão necessariamente armazenados no sistema de arquivos do seu host; pode estar em um compartilhamento de rede ou outro local remoto. Essa técnica só deve ser tentada quando você deseja um backup rápido antes de executar a manutenção em uma máquina específica.

Resumo

Os volumes do Docker devem ser tratados com cuidado porque contêm os dados persistentes do seu aplicativo. A criação de backups regulares protegerá você contra perda de dados caso seu host seja comprometido ou os arquivos sejam excluídos por engano por um processo de contêiner incorreto.

Embora você possa criar backups arquivando o diretório de instalação do Docker, isso deve ser evitado sempre que possível. Os contêineres de backup temporários podem parecer complicados, mas são facilmente agendados e fornecem resultados previsíveis em todos os controladores de volume.

Depois de criar um arquivo de backup de volume, lembre-se de carregá-lo no armazenamento remoto o mais rápido possível. Um backup armazenado na máquina de origem não ajudará se você perder o acesso ou ocorrer uma falha de hardware.

[ad_2]