Backup de conteiners docker | Wel. R. Braga
Backup de conteiners docker
30 de março de 2019 Welington	Deixe um comentário
Conteineres estão na moda mas como de praxe primeiro coloca-se o sistema mais crítico da empresa em produção usando uma tecnologia relativamente nova, ou que poucos tenham domínio, depois procura-se saber os percalços e riscos da escolha. Backups costumam estar neste pacote de problemas sendo renegado a última coisa a se pensar quando implanta-se um novo serviço.
Se você se viu dentro deste cenário acima e precisa mitigar os riscos de uma perda em um ambiente docker então este pequeno "snippet" que salva seus conteineres em arquivos ".tar" vai dar uma ajuda.
cd /backups/images<br> docker ps --format '{{.ID}}\t{{.Names}}' | awk '{<br> print "Backup do container "$1" ("$2")";<br> system("date");<br> system("docker commit -p "$1" backup-"$2);<br> system("docker save -o backup-"$2".tar backup-"$2);<br> system("docker rmi backup-"$2) ;<br> print "";<br> }';<br> date;
Como se vê o código é simples fazendo uso apenas de duas ferramentas (docker e awk) não havendo muito o que se explicar.
O comando "docker ps" lista todos os conteineres disponíveis no ambiente, com seus respectivos ID e nomes e que são enviados (um por linha) para o comando Awk.
O Awk, é uma poderosa ferramenta para manipular linhas e então é usado para invocar o comando docker mais algumas vezes com as seguintes atribuições: Criar uma imagem estática (docker ps); Salvar esta imagem em um arquivo .tar (docker save) e; Remover esta imagem novamente para liberar espaço.
O resultado final será que dentro da pasta "images" (definida na primeira linha do código) você terá uma cópia de todos os seus conteineres armazenados em arquivos ".tar". Ex: backup-reports.tar, backup-web.tar etc que poderão ser transferidos para um novo servidor, storage, fita ou manipulado por sua ferramenta de backups.
E quando você precisar restaurar seu conteiner?
A primeira tarefa será voltar o arquivo ".tar" para o seu servidor docker e isso dependerá de onde e como você gravou o arquivo.
Por exemplo se usou uma ferramenta especifica de backup que rodou o script, então você deverá usá-la para restaurar o arquivo .tar correspondente no seu servidor
Uma vez que o arquivo .tar esteja no servidor você poderá usar o "docker load" para restaurar o seu conteiner e então o "docker run" para subir a nova instância do seu conteiner.
docker load -i /backups/images/backup-reports.tar<br>docker images<br>docker run [...] reports
Mudanças e personalizações
A principal modificação no script antes de usá-lo na prática seria o caminho onde as imagens serão salvas, mas se quiser também é possível alterar o nome do arquivo ".tar" criado pelo "docker save"
Por fim, é importante lembrar que isso não é uma solução completa. O que publiquei é apenas um snippet para usar em sua solução de backup.
Por exemplo você poderia colocar este trecho de código em seu script de backups, que é invocado pelo cron, ou ainda usando a opção de "scripts pré-backup" que costuma existir nas principais ferramentas de backup onde você pode executar uma tarefa antes do backup de fato iniciar etc.
Docker container: Backup and Recovery. https://linuxconfig.org/docker-container-backup-and-recovery (Out, 2016)
Docker Backup – Easy steps to backup and restore your containers. https://bobcares.com/blog/docker-backup/ (Jun, 2015)
backupconteinerdocker
Post anteriorInstalando a versão mais recente do WinePróximo postGNU FIND: Simplificando a busca por arquivos em um intervalo de datas