Rafael Pereira
2 min readSep 25, 2022

--

Docker volumes e mounts bind. Qual a diferença?

Foto da AWS

Por padrão quando um container Docker é destruído todos seus dados salvos nele são destruídos juntos com o container porém existem algumas formas de guardar os dados de forma persistente entre os containers sendo eles o método via volumes e o via bind.

Volumes Docker

Volumes é a forma recomendada para guardar dados de forma persistente entre containers Dockers. Enquanto mounts do tipo bind dependem da estrutura de pastas do sistema operacional que você utiliza, volumes são gerenciados pelo próprio Docker criando assim uma compatibilidade maior entre sistemas Linux, MacOS e Windows.

Benefícios de usar volumes

  • Maior integração entre sistemas operacionais (Linux, MacOS, Windows)
  • Volumes podem ser utilizados por diferentes containers ao mesmo tempo
  • É possível gerenciar os volumes usando a CLI do Docker ou a API Docker
  • A performance é maior que mounts bind
  • Novos volumes podem ser pré-populados com dados por um container

Criando um container com volume:

  1. Crie o volume
docker volume create [nome_do_volume] 

(O nome do volume é opcional, mas caso não escolha um nome o Docker irá gerar uma hash aleatória que pode ser mais difícil de ser identificada pelo usuário).

2. Crie um container usando o volume criado

docker container run -ti --mount type=volume,src=nome_do_volume,dst=caminho_dentro_do_container ubuntu

Mounts Bind

Esse tipo de montagem já está disponivel desde os primórdios do Docker. Eles tem função limitada em comparação com os volumes devido ao fato de os arquivos serem gerenciados pelo sistema operacional da sua maquina, portando havendo diferenças se for criado em uma maquina Windows, Linux ou MacOS.

Benefício de usar mounts Bind

  • Por ser gerenciado pelo sistema operacional e não pelo Docker, outros processos fora do Docker podem usar os arquivos contidos na pasta.

Criando um container usando o método bind

  1. Crie o container passando o parâmetro type=bind
docker container run -ti --mount type=bind,src=pasta_no_seu_computador,dst=pasta_no_container ubuntu

Conclusão

Como podemos perceber usar volumes ou o metodo bind depende muito de qual cenário você vai estar utilizando o Docker. Se é necessario que a pasta seja acessada por processos externos, o metodo bind pode ser a solução, mas se você só precisa salvar os dados de forma persistente entre um ou mais containers Dockers os volumes podem ser mais seguros para seu uso já que funcionam em qualquer sistema operacional e ainda pode ser utilizando com a CLI e a API Docker.

--

--

Rafael Pereira

Fullstack Developer that likes to write about programming concepts and tecnology tools.