CodeGym /Cursos /Docker SELF /Fundamentos de armazenamento de dados no Docker

Fundamentos de armazenamento de dados no Docker

Docker SELF
Nível 19 , Lição 0
Disponível

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

  1. Isolamento do host: os volumes são armazenados em um diretório especial no host, gerenciado pelo Docker, o que garante seu isolamento.
  2. Facilidade de gerenciamento: o Docker fornece comandos práticos para criação, exclusão e gerenciamento de volumes.
  3. 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:

Terminal

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.

Terminal

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:

  1. Acesso direto aos arquivos do host: os containers podem utilizar diretamente arquivos e diretórios que estão no host.
  2. Facilidade para desenvolvimento: os desenvolvedores podem alterar facilmente arquivos no host e ver essas alterações nos containers em tempo real.
  3. 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:

Terminal

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:

Terminal

docker volume create db_data

Executando o container do banco de dados usando o volume:

Terminal

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:

Terminal

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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION