[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]