Compare os dois modelos de armazenamento
| Pergunta | Volume nomeado | Bind mount |
|---|---|---|
| Quem escolhe onde os dados ficam? | O Docker gerencia o local. | Você informa um caminho do host. |
| Uso típico | Dados persistentes da aplicação. | Código-fonte ou arquivo de configuração do host. |
| O que um novo host precisa? | Criar ou restaurar o volume. | Disponibilizar o caminho e os arquivos necessários. |
Ambos podem sobreviver à remoção do contêiner. Nenhum deles é automaticamente um backup. Com um daemon Docker remoto, o caminho de origem do bind pertence ao host do daemon, não necessariamente ao computador em que você digita o comando.
Observe a persistência de um volume nomeado
Escolha um nome de volume ainda não utilizado para este exercício. Os comandos usam uma imagem Alpine pequena; a primeira execução pode baixá-la.
docker volume create devsheet-volume-demo
docker run --rm --mount type=volume,source=devsheet-volume-demo,target=/data alpine:3.22 sh -c "echo hello > /data/note.txt"
docker run --rm --mount type=volume,source=devsheet-volume-demo,target=/data alpine:3.22 cat /data/note.txtResultado esperado: hello na segunda execução. O primeiro contêiner foi removido por --rm, enquanto o volume explicitamente nomeado manteve o arquivo. O volume do exercício permanece até você removê-lo de propósito.
Monte um diretório do host em modo somente leitura
No Bash, crie um novo diretório de exercício com um arquivo. A origem precisa existir ao usar esta sintaxe de bind mount.
mkdir devsheet-bind-demo
printf "hello\n" > devsheet-bind-demo/note.txt
docker run --rm --mount "type=bind,source=$(pwd)/devsheet-bind-demo,target=/data,readonly" alpine:3.22 cat /data/note.txtResultado esperado: hello do arquivo do host. A opção readonly impede gravações por essa montagem no contêiner. O Docker Desktop pode pedir permissão para compartilhar esse diretório do host. O diretório do host permanece após o comando.
Confira as montagens antes de confiar na persistência
Montar sobre um diretório não vazio do contêiner oculta o conteúdo existente enquanto a montagem estiver ativa. Confirme o caminho com docker inspect <container> e confira a seção Mounts.
Um bind mount gravável permite ao contêiner alterar arquivos do host naquele caminho. Limite o diretório exposto. Para bancos de dados, use um método de backup adequado ao banco, em vez de copiar arquivos em uso sem verificar a consistência.