5.1 Ideia de pastas bind mounts
Montar pastas do host nos containers usando bind mounts é uma funcionalidade poderosa do Docker que permite aos containers usarem diretamente os arquivos e pastas localizados no sistema host. Isso é especialmente útil para desenvolvimento, testes e configurações, quando você precisa usar arquivos locais sem copiá-los para o container. Nesta aula, vamos ver como usar bind mounts, exemplos e as melhores práticas.
Bind mounts permitem montar pastas ou arquivos específicos do sistema host nos containers. Isso é diferente de volumes, que são gerenciados pelo Docker e armazenados numa pasta especial.
Vantagens de usar bind mounts
- Acesso direto a arquivos do host: Containers podem usar e modificar diretamente arquivos que estão no host.
- Facilidade no desenvolvimento: Desenvolvedores podem alterar arquivos no host e ver essas mudanças em tempo real nos containers.
- Flexibilidade: Qualquer pasta no host pode ser montada num container.
Comando para montar bind mounts
Bind mounts são montados usando os parâmetros -v
ou --mount
ao iniciar o container.
5.2 Exemplos de uso do parâmetro -v
1. Montando um diretório do host no container
Exemplo mais simples de montagem de um diretório do host no container:
docker run -d --name my_container -v /path/on/host:/path/in/container nginx
Neste exemplo, o diretório /path/on/host
no host é montado no diretório /path/in/container
dentro do container nginx.
2. Montando um arquivo do host no container
Você também pode montar arquivos individuais:
docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx
Neste exemplo, o arquivo de configuração config.conf
no host é montado como o arquivo de configuração nginx.conf
dentro do container.
5.3 Exemplos de uso do parâmetro --mount
O parâmetro --mount
oferece uma maneira mais detalhada de montar diretórios vinculados com a possibilidade de especificar diferentes parâmetros.
1. Montando um diretório usando --mount
docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx
Este exemplo é semelhante ao exemplo anterior com -v
, mas usa uma sintaxe mais detalhada.
2. Montagem no modo somente leitura
docker run -d --name my_container --mount
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx
Neste exemplo, o diretório é montado no modo somente leitura, o que impede alterações nos arquivos dentro do container.
5.4 Exemplos práticos
Pra desenvolver um aplicativo web, tu pode montar um diretório com o código fonte no host dentro do container.
Criando o diretório com o código fonte no host:
mkdir -p ~/my_web_app
echo "Hello, World!" > ~/my_web_app/index.html
Rodando um container montando o diretório:
docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx
Agora qualquer mudança no diretório ~/my_web_app no host vai ser refletida direto no container.
Exemplo 2: Usando arquivos de configuração
Tu pode montar arquivos de configuração de um diretório no host dentro do container.
Criando um arquivo de configuração no host:
echo "user www-data;" > ~/nginx.conf
echo "worker_processes auto;" >> ~/nginx.conf
Rodando um container montando o arquivo de configuração:
docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
Nesse exemplo, o arquivo de configuração do Nginx no host é usado dentro do container.
5.5 Verificando diretórios e arquivos montados
Você pode checar o conteúdo dos diretórios e arquivos montados usando o comando docker exec pra executar comandos dentro do container.
Exemplo
Checando o conteúdo de um diretório:
docker exec -it my_container ls /path/in/container
Checando o conteúdo de um arquivo:
docker exec -it my_container cat /path/in/container/config.conf
Removendo diretórios vinculados
Os diretórios vinculados não são gerenciados diretamente pelo Docker, então a remoção deles acontece no nível do sistema de arquivos do host.
Exemplo
Remoção de um diretório vinculado no host:
rm -r /path/on/host
GO TO FULL VERSION