VOLUME
A instrução VOLUME
em um Dockerfile é usada para definir pontos de montagem que persistem dados gerados e usados por contêineres Docker. Quando um contêiner é executado, o Docker cria automaticamente volumes conforme especificado, garantindo que os dados armazenados nesses volumes sejam preservados independentemente do ciclo de vida do contêiner.
Sintaxe Básica
Funcionalidades do VOLUME
VOLUME
Persistência de Dados: Volumes permitem que dados sejam persistidos além da vida útil do contêiner. Se o contêiner for removido, os dados no volume ainda estarão disponíveis.
Compartilhamento de Dados: Volumes podem ser compartilhados entre vários contêineres, facilitando a comunicação e a colaboração entre eles.
Isolamento: Volumes são gerenciados pelo Docker, o que garante isolamento entre os dados armazenados no contêiner e no sistema de arquivos do host, aumentando a segurança e a consistência.
Exemplos de Uso
Definir um Volume Simples
Neste exemplo, o diretório /var/lib/mysql
dentro do contêiner é declarado como um volume. Esse diretório é onde o MySQL armazena seus dados. Ao definir um volume, você garante que os dados persistirão, mesmo que o contêiner seja recriado.
Definir Múltiplos Volumes
Aqui, dois diretórios dentro do contêiner são declarados como volumes: /var/cache/nginx
e /var/log/nginx
. Isso permite que tanto os caches quanto os logs do NGINX sejam persistidos.
Interação com docker run
docker run
Ao criar um contêiner a partir de uma imagem que define volumes, você pode sobrepor o comportamento padrão especificando volumes ou bind mounts com a opção -v
ou --mount
:
Este comando monta o diretório /meu/diretorio
do host como o volume /var/lib/mysql
no contêiner.
Boas Práticas e Considerações
Nomeação e Organização: Defina volumes para diretórios que contenham dados que precisam ser persistidos ou compartilhados, como bancos de dados, arquivos de configuração, ou caches. Mantenha uma estrutura de diretórios clara e organizada dentro do contêiner.
Gerenciamento de Volumes: Ao usar volumes, lembre-se de que o Docker gerencia esses volumes de forma independente do contêiner. Para ver os volumes existentes, você pode usar
docker volume ls
, e para removê-los,docker volume rm
.Isolamento de Dados: Volumes são isolados do sistema de arquivos do host, o que garante que mudanças no host não afetem diretamente os dados dentro do contêiner.
Persistência por Padrão: Qualquer dado armazenado em um volume não será removido automaticamente quando o contêiner for excluído, o que significa que você precisa gerenciar manualmente a remoção de volumes desnecessários.
Exemplos Avançados
Usando Volumes com Serviços de Banco de Dados
Este Dockerfile declara o diretório de dados do PostgreSQL como um volume. Isso garante que, mesmo que o contêiner do PostgreSQL seja removido ou atualizado, os dados do banco de dados permanecerão intactos.
Usando Volumes para Aplicações Web
Aqui, o diretório /var/www/html
onde o código da aplicação web é armazenado, é declarado como um volume. Isso permite que o conteúdo do site seja atualizado sem precisar reconstruir a imagem inteira.
Resumo
VOLUME
define pontos de montagem para persistência e compartilhamento de dados no Docker.Volumes são gerenciados pelo Docker e podem ser compartilhados entre contêineres, garantindo que dados importantes não sejam perdidos quando os contêineres forem removidos.
Use volumes para garantir que dados essenciais, como bancos de dados e arquivos de configuração, sejam preservados e facilmente acessíveis, mesmo entre diferentes contêineres.
Laboratório
O assunto será aprofundado mais a frente
Last updated