docker volume

Containers são descartáveis, dados não: crie um volume, monte com -v, e veja ele sobreviver ao docker rm.

>_ Teste aqui: um Linux simulado, nesta página
Carregando o terminal…

Exemplos

  • docker volume create db-data
  • docker run -d --name db -e POSTGRES_PASSWORD=secret -v db-data:/var/lib/postgresql/data postgres
  • docker volume ls
  • docker volume inspect db-data
  • docker rm -f db
  • docker volume ls

Como funciona

Os arquivos escritos dentro de um container somem junto com ele. Um volume é um espaço que o Docker guarda fora do container: monte com -v NAME:/path e o que for escrito ali fica.

É assim que bancos de dados rodam no Docker: apague e recrie o container (versão nova, configurações novas) montando o mesmo volume — os dados continuam lá.

Sintaxe

docker volume create|ls|inspect|rm [NOME]  ·  docker run -v NOME:CAMINHO IMAGEM

Opções

OpçãoO que faz
create NAMEcria um volume com nome
-v NAME:PATHmonta no container em CAMINHO
lslista os volumes
inspect NAMEdetalhes, como onde ele fica na máquina
rm NAMEapaga (só quando nenhum container usa)

Bom saber

  • O docker run -v db-data:/path cria o volume sozinho se ele ainda não existe.
  • Com um caminho de pasta em vez de nome (-v ./site:/usr/share/nginx/html) você monta uma pasta da sua máquina — um bind mount.