Voltar ao blog

Trabalhando com Volumes de Dados do Docker no Ubuntu 20.04

Trabalhando com Volumes de Dados do Docker no Ubuntu 20.04

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:

  1. Ubuntu instalado. Confira o nosso Como configurar seu servidor Ubuntu 18.04 tutorial para uma referência rápida.
  2. 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.
  3. 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:

  1. Primeiro, crie um novo container chamado, my-container executando o comando abaixo:
    Docker Data Volumes 1 docker create my-container
    Isso criará um novo container na pasta /tmp . Você pode alterar o diretório da pasta conforme necessário.
  2. 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:
    Docker Data Volumes 2 Run docker container
    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:
  3. Finalmente, saia deste bash executando o comando exit . Em seguida, execute o comando abaixo:
    Docker Data Volumes 3 New container sample file
    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:

  1. Primeiro, crie um diretório em sua máquina hospedeira onde deseja armazenar os logs:
    Em seguida, inicie seu container executando o comando abaixo:
    Docker run nginx container
  2. 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:

Feliz Computação!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.