Skip to content

Instantly share code, notes, and snippets.

@zepadovani
Created May 25, 2025 06:11
Show Gist options
  • Select an option

  • Save zepadovani/dc5178ef15dcbea64ed6e84d7dbf2d4b to your computer and use it in GitHub Desktop.

Select an option

Save zepadovani/dc5178ef15dcbea64ed6e84d7dbf2d4b to your computer and use it in GitHub Desktop.
instalando docker com dados na pasta de usuário (evitando problemas com o btrfs)

Configurando o Docker com Dados na Partição /home (ext4) no Manjaro (Abordagem B)

Este guia descreve como configurar o Docker no Manjaro Linux para armazenar seus dados (imagens, contêineres, volumes) em um diretório dentro da sua pasta /home. Esta abordagem é particularmente útil se sua partição raiz (/) está em BTRFS e você usa Timeshift para snapshots, enquanto sua partição /home está em um sistema de arquivos diferente (como ext4) e não é incluída nesses snapshots. Mover os dados do Docker para /home evita que os snapshots do Timeshift se tornem excessivamente grandes e lentos.

Pré-requisitos:

  • Docker instalado no Manjaro.
  • Sua partição /home está formatada em ext4 (ou outro sistema de arquivos não BTRFS que você não inclui nos snapshots da raiz).

Atenção: Substitua SEU_USUARIO pelo seu nome de usuário real nos comandos abaixo.

Passos para Configuração

  1. Pare o serviço Docker: Se o Docker estiver em execução, é crucial pará-lo antes de fazer qualquer alteração no diretório de dados.

    sudo systemctl stop docker
    sudo systemctl stop docker.socket
  2. Crie o novo diretório de dados do Docker na sua /home: Este será o novo local para todos os dados do Docker.

    mkdir -p /home/SEU_USUARIO/docker-data
  3. Mova os dados existentes do Docker (se houver): Se você já utilizou o Docker anteriormente, a pasta /var/lib/docker pode conter dados importantes (imagens, volumes). Use rsync para movê-los para o novo local. Se for uma instalação nova do Docker e /var/lib/docker não existir ou estiver vazio, você pode pular o comando rsync e a remoção subsequente.

    sudo rsync -aqxPS /var/lib/docker/ /home/SEU_USUARIO/docker-data/

    Após confirmar que a cópia foi bem-sucedida e que o Docker funciona corretamente com o novo local (após completar todos os passos), você pode considerar remover o diretório antigo para liberar espaço. Execute este comando com cautela:

    sudo rm -rf /var/lib/docker

    Se /var/lib/docker por acaso era um subvolume BTRFS (por exemplo, de uma tentativa anterior de configuração diferente), você o removeria com:

    sudo btrfs subvolume delete /var/lib/docker
  4. Configure o Docker para usar o novo diretório de dados: Você precisa informar ao daemon do Docker onde encontrar seus dados. Isso é feito editando (ou criando) o arquivo /etc/docker/daemon.json.

    Primeiro, crie o diretório /etc/docker se ele não existir:

    sudo mkdir -p /etc/docker

    Agora, crie ou edite o arquivo daemon.json usando um editor de texto como o nano:

    sudo nano /etc/docker/daemon.json

    Adicione o seguinte conteúdo ao arquivo. Se o arquivo já existir e tiver outro conteúdo JSON, adicione/modifique cuidadosamente as chaves "data-root" e "storage-driver":

    {
      "data-root": "/home/SEU_USUARIO/docker-data",
      "storage-driver": "overlay2"
    }

    Lembre-se de substituir SEU_USUARIO pelo seu nome de usuário real. Salve e feche o arquivo.

  5. Adicione seu usuário ao grupo docker (recomendado): Para executar comandos Docker sem precisar usar sudo todas as vezes, adicione seu usuário ao grupo docker.

    sudo usermod -aG docker $USER

    Importante: Você precisará fazer logout completo da sua sessão de usuário e fazer login novamente para que esta alteração de grupo tenha efeito.

  6. Recarregue a configuração do systemd, reinicie e habilite o Docker: Esses comandos aplicam as alterações e garantem que o Docker inicie na próxima inicialização do sistema.

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    sudo systemctl enable docker

Verificação

Após reiniciar o Docker e ter feito logout e login novamente (para que a alteração de grupo do usuário tenha efeito):

  1. Verifique as configurações do Docker: Execute este comando sem sudo se o passo de logout/login foi realizado corretamente.

    docker info

    Na saída, procure por estas linhas para confirmar a configuração:

    Docker Root Dir: /home/SEU_USUARIO/docker-data
    Storage Driver: overlay2
    
  2. Execute um contêiner de teste para garantir que tudo está funcionando:

    docker run hello-world

    Se bem-sucedido, esta imagem será baixada e executada, exibindo uma mensagem de boas-vindas.

Com esses passos, o Docker estará configurado para usar o diretório especificado na sua pasta /home, e sua configuração do Timeshift para a partição raiz BTRFS não será afetada pelos dados do Docker.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment