1.1 Volumes
O armazenamento de dados no Docker é uma parte importante do trabalho com containers. Containers por si só são efêmeros, o que significa que os dados dentro deles serão perdidos após a parada ou remoção do container. Para preservar os dados entre as execuções e garantir o armazenamento a longo prazo, o Docker fornece duas tecnologias principais: volumes e bind mounts (diretórios ligados).
Volumes
Volumes são recursos gerenciados pelo Docker para armazenamento de dados. Eles existem independentemente do ciclo de vida dos containers, o que permite utilizá-los para armazenamento de dados a longo prazo. Volumes podem ser criados e gerenciados pelo Docker, oferecendo uma forma conveniente de armazenar dados fora dos containers.
Vantagens do uso de volumes
- Isolamento do host: os volumes são armazenados em um diretório especial no host, gerenciado pelo Docker, o que garante seu isolamento.
- Facilidade de gerenciamento: o Docker fornece comandos práticos para criação, exclusão e gerenciamento de volumes.
- Compatibilidade e portabilidade: os volumes podem ser facilmente movidos entre diferentes hosts e utilizados com diferentes containers.
Exemplo de criação e uso de volumes
Criação de um volume:
docker volume create my_volume
Uso do volume em um container:
Neste exemplo, o volume my_volume
é montado no diretório /data
dentro do container my_container
.
docker run -d --name my_container -v my_volume:/data nginx
1.2 Diretórios Vinculados (Bind Mounts)
Os diretórios vinculados permitem montar diretórios específicos do host nos containers. Isso permite que os containers utilizem arquivos e diretórios que estão no host, o que é especialmente útil para desenvolvimento e teste, quando é necessário trabalhar com arquivos locais.
Vantagens de usar diretórios vinculados:
- Acesso direto aos arquivos do host: os containers podem utilizar diretamente arquivos e diretórios que estão no host.
- Facilidade para desenvolvimento: os desenvolvedores podem alterar facilmente arquivos no host e ver essas alterações nos containers em tempo real.
- Flexibilidade: os diretórios vinculados podem ser quaisquer diretórios no host, proporcionando maior flexibilidade no gerenciamento de dados.
Exemplo de uso de diretórios vinculados
Rodando um container com um diretório vinculado:
docker run -d --name my_container -v /path/on/host:/data nginx
Neste exemplo, o diretório /path/on/host
no host é montado no diretório /data
dentro do container my_container
.
Comparação entre Volumes e Diretórios Vinculados:
Característica | Volumes | Diretórios Vinculados |
---|---|---|
Armazenamento de dados | Gerenciado pelo Docker | Gerenciado pelo usuário |
Isolamento | Isolado do sistema de arquivos do host | Utiliza o sistema de arquivos do host |
Desempenho | Otimizado para o Docker | Depende do sistema de arquivos do host |
Aplicação | Armazenamento de dados de longo prazo | Desenvolvimento e teste |
1.3 Exemplos práticos
Exemplos práticos de uso
Exemplo 1: Usando volumes para banco de dados
Para garantir armazenamento persistente de dados do banco de dados, você pode usar volumes.
Criando um volume:
docker volume create db_data
Executando o container do banco de dados usando o volume:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
Exemplo 2: Usando diretórios vinculados para desenvolvimento web
Para desenvolver um aplicativo web, você pode usar diretórios vinculados, para que alterações nos arquivos locais sejam imediatamente refletidas no container.
Executando o container com diretório vinculado:
docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx
Neste exemplo, o diretório de trabalho atual my_website
é montado no diretório /usr/share/nginx/html
do container nginx
.
GO TO FULL VERSION