Bind Mount
Volume gerenciado pelo usuário
O que são Bind Mounts?
Bind mounts são uma forma de montar diretórios ou arquivos do sistema de arquivos do host diretamente em um container Docker. Diferente dos volumes, que são gerenciados pelo Docker, os bind mounts usam paths absolutos do host, permitindo que os dados no container e no host sejam sempre sincronizados.
Características dos Bind Mounts
Path Específico
Ao criar um bind mount, você especifica um path no sistema de arquivos do host que será montado em um path no container.
Sincronização em Tempo Real
Quaisquer alterações feitas no diretório ou arquivo montado dentro do container serão refletidas no host e vice-versa.
Maior Controle
Como o path no host é especificado diretamente, o usuário tem mais controle sobre onde os dados estão armazenados.
Quando Usar Bind Mounts
Bind mounts são úteis em cenários onde:
Precisa-se acessar diretamente arquivos do host, como logs, arquivos de configuração ou diretórios de código-fonte.
A persistência de dados é necessária durante o desenvolvimento, onde o código-fonte pode ser editado no host e refletido imediatamente no container.
Existe a necessidade de integrar ferramentas de build ou IDEs que operam diretamente no sistema de arquivos do host.
Como Criar e Usar Bind Mounts
Montando um Diretório do Host em um Container
Neste exemplo, /path/no/host
é o diretório no host que será montado em /path/no/container
no container.
Exemplo Prático
Neste exemplo, o diretório /var/www/html
no host será montado em /usr/share/nginx/html
no container. Isso permite que o conteúdo do site no host seja servido pelo servidor web NGINX dentro do container.
Gerenciamento de Bind Mounts
Bind mounts não são gerenciados pelo Docker, portanto, não aparecem nos comandos de gerenciamento de volumes (ex: docker volume ls
). O gerenciamento do diretório ou arquivo é feito diretamente no sistema de arquivos do host
Vantagens e Desvantagens
Vantagens
Performance
Bind mounts podem ter um desempenho melhor, especialmente ao acessar grandes quantidades de dados, pois os dados não precisam ser movidos para um volume Docker.
Flexibilidade
Permite usar qualquer diretório ou arquivo do host, proporcionando mais controle e flexibilidade.
Desvantagens
Dependência do Host
Como o bind mount depende de paths absolutos do host, pode haver problemas de portabilidade, especialmente ao mover containers entre diferentes ambientes.
Segurança
Montar diretórios críticos do host pode expor dados sensíveis ou criar riscos de segurança se o container for comprometido.
Comparação com Volumes Docker:
Volumes Docker
São gerenciados diretamente pelo Docker, oferecem maior portabilidade, e são ideais para persistência de dados entre containers e hosts de forma agnóstica ao sistema de arquivos.
Bind Mounts
Oferecem mais controle e são ideais para casos específicos onde o acesso direto ao sistema de arquivos do host é necessário.
Exemplos de Uso
Desenvolvimento de Aplicações
Durante o desenvolvimento de software, bind mounts permitem que o código seja editado no host com as mudanças refletidas imediatamente no container:
Compartilhamento de Logs: Para facilitar a análise de logs gerados pelo container
Considerações Finais
Bind mounts são uma poderosa ferramenta no Docker para cenários onde o acesso direto aos dados do host é essencial. No entanto, devem ser usados com cautela devido a potenciais implicações de segurança e portabilidade. Eles são ideais para desenvolvimento, integração contínua, e outros cenários onde a sincronização de dados em tempo real entre o host e o container é necessária.
Laboratório
Criação de arquivo fora do container:
Criação de arquivo dentro do container:
Last updated