Erros ao configurar um serviço são um processo natural que todo engenheiro enfrenta em sua rotina de trabalho. Um deles é o erro do Docker: sem espaço no dispositivo, um erro que pode ser muito confuso, pois atualmente, no Linux, o espaço é dividido pelo sistema de arquivos de forma bastante flexível e é bem possível ficar sem espaço ou sem cota.
Como resolver um erro do Docker?
Esse problema tem duas causas principais, que indicam que:o espaço na partição de disco no caminho /var/lib/docker está cheio e requer mais espaço. Esse problema ocorre devido à grande quantidade de espaço ocupado pelos objetos do Docker, assim como pelo repositório local.
O espaço da cota do Docker se esgotou - esta também é uma das razões mais comuns quando a configuração especifica o limite de memória que o Docker pode usar. Esse recurso é útil para evitar o preenchimento excessivo do espaço do disco.
Para verificar se você tem espaço em disco suficiente ou insuficiente, use o comando que exibirá uma lista dos sistemas de arquivos e o espaço que ocupam:
Observe que a pasta /var/lib/docker pode estar localizada tanto na partição raiz / disco lógico quanto separadamente em /var. Neste caso, a pasta de destino está localizada na partição lógica /dev/vda2. Se o tamanho do seu espaço em disco não permitir carregar a imagem ou armazenar dados, você deve liberar espaço de arquivos desnecessários ou aumentar o disco.
Limpando arquivos do Docker
Se você não tiver os projetos necessários no Docker, pode limpar completamente o sistema com o comando:
O Docker fará uma varredura no repositório local, repositórios, contêineres e os removerá, mas antes de fazer isso, certifique-se de que não há contêineres em execução com o comando:
Para excluir arquivos de forma específica, use subcomandos, por exemplo, a limpeza de imagens no repositório local será feita com o comando:
Para excluir outros objetos, use subcomandos semelhantes: volume, container, network, etc. Se precisar excluir um arquivo específico, primeiro navegue pela lista e exclua o necessário:
Após verificar novamente o espaço disponível no disco com o comando df -H, caso ainda não haja espaço suficiente, siga para o próximo ponto.
Extensão de Disco
Se você não tiver recursos suficientes, pode executar ações em servidores cloud poderosos. O Serverspace fornece servidores VPS isolados para uso comum e virtualizado.
Aumente o espaço em disco do dispositivo expandindo o armazenamento virtual do hipervisor ou selecione um disco diferente para a máquina. O espaço será aumentado, no entanto, deve ser alocado aos volumes lógicos e ao sistema de arquivos.
Para ampliar uma partição lógica, vamos encontrar uma lista desses volumes, geralmente eles estão mapeados para diretórios na árvore do Linux:
Neste caso, é /dev/vda2. Usamos uma utilidade pré-preparada para alterar a tabela de partição do disco. Observe que você precisa especificar sua partição em vez de /dev/vda2:
O comando print listará as partições lógicas atuais, memorize o número da sua partição e insira o comando:
Insira o novo tamanho do disco, note que não é o quanto o espaço aumentará, mas o novo valor! Por exemplo, 40GB.
Em seguida, vamos aumentar o tamanho do sistema de arquivos através de uma utilidade semelhante em um único comando!
Por padrão, todo o espaço livre da partição lógica será ocupado pelo sistema de arquivos. Após isso, você pode verificar o espaço liberado com uma utilidade já conhecida:
Mas e se houver espaço suficiente para o contêiner Docker e o erro for o mesmo? Muito provavelmente é a cota alocada.
Aumentar a cota do Docker
Uma solução em poucas linhas que permite substituir o valor das variáveis e especificar mais espaço para o Docker. Para especificar explicitamente os recursos, precisamos reiniciar os contêineres com os novos parâmetros. Vamos parar todas as tarefas atuais:
Depois disso, vamos excluir os contêineres com o comando:
Defina os novos parâmetros por meio de opções. Observe que você deve ter cuidado ao escolher os valores para os contêineres, pois eles podem consumir recursos do sistema desnecessariamente!
A opção -m especifica um limite de uso de RAM de 512MB, --memory-swap 1GB de memória virtual e 2 núcleos de CPU. Aumentando os valores em relação aos padrões, o problema será resolvido!