Por padrão, o Docker organiza seus dados no diretório “/var/lib/docker” na partição raiz.À medida que seus aplicativos e contêineres crescem, esse diretório pode rapidamente ocupar um espaço significativo. Sintomas como desempenho degradado do servidor, incapacidade de salvar dados ou travamentos aleatórios geralmente indicam que a partição raiz está próxima da capacidade máxima. Este guia explorará estratégias eficazes para realocar seus volumes ou dados do Docker para uma partição alternativa, aliviando assim a pressão sobre a partição raiz.
A importância de mover volumes do Docker
Os contêineres Docker frequentemente geram quantidades substanciais de dados persistentes, o que pode esgotar rapidamente a capacidade de armazenamento da sua partição raiz. Mover os volumes do Docker para uma partição diferente pode oferecer diversas vantagens:
- Libere espaço no sistema de arquivos raiz.
- Evite falhas do sistema causadas por falta de espaço em disco.
- Alocar dados de aplicativos maiores para soluções de armazenamento exclusivas
- Melhorar a gestão geral dos recursos de armazenamento.
Por exemplo, bancos de dados como MySQL ou PostgreSQL podem armazenar inúmeros gigabytes de dados. Transferir esses volumes para uma partição com mais espaço pode aumentar significativamente a estabilidade do sistema.
Como encontrar o diretório de volumes do Docker
Localizar o diretório de volumes do Docker é um primeiro passo crucial antes de iniciar a migração. Use o comando abaixo para listar todos os seus volumes do Docker disponíveis:
docker volume ls

Para obter informações detalhadas sobre um volume específico, execute o seguinte comando:
docker volume inspect volume_name
Na saída, localize o Mountpointcampo que indica o diretório exato onde o Docker armazena os dados do volume.

Como mover toda a raiz de dados do Docker
Para transferir todos os dados do Docker — incluindo volumes, imagens e logs — para uma partição diferente, você pode mover todo o diretório de armazenamento do Docker. Essa abordagem abrangente garante que “/var/lib/docker” não fique cheio.
Comece por interromper o serviço Docker para evitar modificações nos arquivos durante a migração:
sudo systemctl stop docker
Em seguida, utilize o comando rsync para copiar os dados do Docker:
sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/
Este comando irá replicar o diretório do Docker, mantendo as permissões e exibindo o progresso da transferência.

Se precisar preservar atributos adicionais do Docker, você pode usar este comando aprimorado:
sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/
Este comando é preferível devido à sua capacidade de reter mais metadados do sistema de arquivos e fornecer uma indicação detalhada do progresso.
Após a transferência, renomeie o diretório de dados anterior como backup:
sudo mv /var/lib/docker /var/lib/docker.old
Atualize a configuração do Docker editando o arquivo daemon usando:
sudo nano /etc/docker/daemon.json
Adicione a seguinte configuração:
{"data-root": "/path/to/new/partition/docker-data"}

Em seguida, reinicie o Docker executando o seguinte comando:
sudo systemctl start docker
Confirme se o diretório de dados do Docker foi atualizado com sucesso usando o seguinte comando:
docker info | grep "Docker Root Dir"

Se tudo parecer correto, você pode prosseguir com a exclusão do backup antigo:
sudo rm -rf /var/lib/docker.old
Movendo todos os dados do Docker via Docker Desktop (método GUI)
Se você preferir uma interface gráfica, o Docker Desktop permite transferir todos os dados do Docker modificando o local da imagem em disco. Esse método efetivamente move todos os dados armazenados pelo Docker — incluindo imagens, contêineres e volumes — para um novo local.
Abra o Docker Desktop, acesse Configurações, vá para Recursos → Avançado e localize a opção Local da Imagem de Disco.

Selecione Procurar para designar um diretório na partição preferida para o armazenamento do Docker, como “/mnt/newdisk/docker-data”.Clique em Aplicar e Reiniciar para iniciar a realocação dos dados.

Dados de Volume Específico em Movimento
Para maior flexibilidade, você pode mover um volume Docker específico para uma partição diferente, mantendo-o em uso com seu contêiner por meio de uma montagem de volume (bind mount) no host. Essa abordagem é segura, simples e facilita os processos de backup. Comece interrompendo o contêiner que utiliza o volume:
docker stop container_name
Em seguida, utilize-o rsyncpara transferir os dados do volume com segurança:
sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/
Este comando transferirá todo o conteúdo do volume anterior para “/data/docker/my_volume”.
Você precisa ajustar seu arquivo “docker-compose.yml” para refletir uma montagem de volume (bind mount) em vez de um volume gerenciado pelo Docker:
services: my_service: volumes: - /data/docker/my_volume:/container/path
Certifique-se de substituir /container/pathpelo caminho de montagem original dentro do contêiner. Reimplante o contêiner usando o seguinte comando:
docker-compose up -d
Conclusão
Transferir volumes do Docker ou todo o diretório de dados do Docker para uma partição com mais espaço pode liberar significativamente espaço no sistema de arquivos raiz, melhorando a estabilidade do servidor. Essa abordagem proativa minimiza o risco de perda de dados e simplifica o gerenciamento futuro do armazenamento.
Caso a migração completa do diretório do Docker se mostre inviável, existem outras opções para recuperar espaço, como usar o docker system prunecomando para eliminar contêineres, imagens, redes e caches não utilizados, ou empregar montagens de diretórios no Linux para mover diretórios substanciais sem interromper a operação do Docker.
Deixe um comentário