Introdução
Docker Data Volumes é um conceito importante ao conteinerizar suas aplicações. Conhecer este conceito é vital para garantir a melhor experiência de sua aplicação conteinerizada, juntamente com persistência confiável e gerenciamento de dados. No entanto, embora este conceito seja importante, ele também é confuso e complexo para muitos desenvolvedores. É importante que desenvolvedores e especialistas em DevOps consigam entender como configurar Volumes de Dados do Docker, compreender seu uso correto, conhecer os diferentes tipos de volumes e qual tipo selecionar para sua aplicação.
Este tutorial é focado em explicar o conceito e o uso de Volumes de Dados do Docker. Depois de concluir este tutorial, você terá dominado a configuração e o trabalho com qualquer tipo de Volume de Dados do Docker.
Pré-requisitos
Para acompanhar este tutorial, você precisará ter os seguintes itens:
- Ubuntu instalado. Confira o nosso Como configurar seu servidor Ubuntu 18.04 tutorial para uma referência rápida.
- Usuário Ubuntu com privilégios sudo. Esta etapa pode ser complicada, especialmente se você não estiver familiarizado com o Linux. Leia Configurando o Arquivo Sudoers do Linux para um guia detalhado.
- Docker instalado no Ubuntu. Para instalar o Docker no seu Ubuntu, você pode seguir o nosso Como instalar & operar o Docker no Ubuntu na nuvem pública blog.
Embora este tutorial se concentre no gerenciamento do Docker no Ubuntu, docker comandos são aplicáveis em todos os sistemas operacionais com o Docker instalado.
Entendendo Como Funcionam os Containers Docker
Para entender completamente os Volumes de Dados do Docker, você deve saber como os containers Docker funcionam. Nesta seção, fornecemos uma visão geral dos conceitos básicos para os novos usuários do Docker. Se você já sabe como o Docker funciona ou é um usuário experiente do Docker, pode pular esta seção e começar a usar os volumes de dados.
Os containers Docker permitem executar uma aplicação sobre o sistema operacional hospedeiro instalando a plataforma Docker. Como a plataforma Docker está instalada no sistema operacional hospedeiro, uma abstração é formada entre a máquina hospedeira e a aplicação convidada. Ao contrário de uma máquina virtual, um container Docker compartilha seu kernel Linux com o sistema operacional hospedeiro. Como o Docker não precisa de nenhum sistema operacional adicional instalado sobre a máquina hospedeira, as aplicações Docker são leves e acessíveis em todas as máquinas hospedeiras, desde que o Docker esteja instalado nessa máquina hospedeira.
Como não há um SO convidado adicional, a plataforma Docker compartilha recursos com a máquina hospedeira. Iniciar a aplicação Docker é rápido, mas a complexidade surge quando você precisa compartilhar os recursos. O Docker não possui memória ou armazenamento próprio para persistência de dados. Esses recursos devem vir da máquina hospedeira. Pessoas acostumadas a usar máquinas virtuais acham esse processo de compartilhamento e gerenciamento de recursos difícil. Não ter o conhecimento adequado pode levar a resultados inesperados e indesejados. Embora este tutorial assuma que você esteja familiarizado com o ecossistema Docker, sinta-se à vontade para ler nosso tutorial detalhado O que é o Docker? Uma Visão Geral do Ecossistema Docker para uma rápida recapitulação.
Persistindo Dados Usando Volumes de Dados do Docker
Ao trabalhar com o Docker, você não pode criar um volume diretamente dentro dele. Portanto, para armazenar dados, precisamos criar um container de volume Docker com um volume anexado a ele. Para conectar nossa aplicação Docker com este container de volume de dados, usamos o comando --volume-from do Docker para obter o container e anexá-lo à nossa aplicação.
Passaremos pelo processo passo a passo:
- Primeiro, crie um novo container chamado,
my-container executando o comando abaixo:
1docker create -v /tmp --name my-container ubuntu
Isso criará um novo container na pasta /tmp . Você pode alterar o diretório da pasta conforme necessário. - Agora que seu container de dados está pronto, você pode escrever nele executando um novo container Ubuntu com a flag
--volume-from e depois executando o
bash. Qualquer coisa que escrevermos no
tmp o diretório será salvo na pasta
/tmp da nossa máquina hospedeira:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
A opção de linha de comando -t chama um terminal de dentro do container. A flag -i torna a conexão interativa. No prompt do bash para o container Ubuntu, crie um arquivo em /tmp:
1echo "Some sample data" > /tmp/sample_file - Finalmente, saia deste bash executando o comando
exit . Em seguida, execute o comando abaixo:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Você encontrará o seu sample_file neste diretório. Não há restrição quanto ao número de volumes a especificar. Você pode adicionar quantos volumes quiser usando a flag --volumes-from . Você também pode criar quantos containers de volume de dados desejar.
Acessando Dados Entre o Hospedeiro e o Container Docker
Para leitores experientes com Virtualização, esta opção é semelhante à opção de pasta compartilhada em máquinas virtuais. Aqui, em vez de criar um container data-only , executamos nossa aplicação Docker usando a imagem Docker e substituímos um de seus diretórios pelo conteúdo de um diretório no sistema hospedeiro.
Um cenário comum seria salvar os arquivos de log na máquina hospedeira. Isso pode ser necessário para que possamos analisar esses arquivos conforme necessário, sem precisar entrar na máquina. Para este cenário, suponha que você esteja usando a imagem Docker Nginx e deseja armazenar seus arquivos de log na máquina hospedeira. A imagem Docker do Nginx grava os logs no diretório /var/log/nginx , mas este é /var/log/nginx dentro do container Docker Nginx. Portanto, este local não está acessível para a máquina hospedeira.
Para atingir nosso objetivo, precisaríamos criar uma pasta compartilhada para armazenar os logs entre a máquina hospedeira e a imagem Docker Nginx. Abaixo, ilustraremos esse processo em um guia passo a passo fácil:
- Primeiro, crie um diretório em sua máquina hospedeira onde deseja armazenar os logs:
Em seguida, inicie seu container executando o comando abaixo:1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- Este comando
run está aceitando alguns argumentos, então vamos detalhá-lo para entender melhor:
- -p 5000:80: Configura um encaminhamento de porta. O container Nginx está escutando na porta 80 por padrão, e isso mapeia a porta do container Nginx 80 para a porta 5000 no sistema hospedeiro.
- -d: Desacopla o processo e o executa em segundo plano.
- -v ~/my-nginxlogs:/var/log/nginx: Vinculamos o diretório /var/log/nginx de dentro do container Nginx ao diretório /my-nginxlogs na máquina hospedeira. Este : divide o caminho do hospedeiro do caminho do container. O caminho do hospedeiro sempre vem primeiro.
Agora que nosso container Nginx está em execução, primeiro verifique se o servidor Nginx está servindo na porta da nossa máquina hospedeira 5000 abrindo seu navegador web e acessando a URL: http://localhost:5000. Assim que a página de boas-vindas aparecer, seu servidor Nginx estará pronto e criando logs em sua pasta /var/log/nginx .
Se você abrir a pasta /my-nginxlogs da sua máquina hospedeira, verá os arquivos de log aqui do container Docker Nginx. Se você fizer alterações na pasta /my-nginxlogs na máquina hospedeira, enquanto o container Nginx estiver em execução, as alterações também serão refletidas na pasta /var/log/nginx do container também.
Conclusão
Neste tutorial, adotamos uma abordagem abrangente para entender os Volumes de Dados do Docker. Vimos a criação de volumes para sua aplicação, compartilhamento de dados entre o hospedeiro e o container Docker, tipos de dados e persistência de dados. Isso ajudará você a persistir dados em suas aplicações containerizadas, bem como a gerenciar o estado e a configuração da aplicação.
Para aprender mais sobre o Docker, confira os seguintes tutoriais do nosso blog:
- Como Hospedar um Repositório de Imagens Docker e Construir Imagens Docker com uma Instância Autogerenciada do GitLab no Ubuntu 20.04
- Construir e Implantar um Aplicativo Flask com Docker no Ubuntu 20.04
- Configurando um Registro Docker Privado no Ubuntu 18.04
- Como Compartilhar Dados Entre um Container Docker e um Host
- Limpar Recursos do Docker – Imagens, Containers e Volumes
Feliz Computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.