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