Anexar Armazenamento Persistente a um Container

Red Hat Enterprise LinuxBeginner
Pratique Agora

Introdução

Neste desafio, você irá anexar um armazenamento persistente a um container utilizando o podman. Por natureza, os containers são efêmeros, o que significa que quaisquer dados criados dentro deles são perdidos quando o container é removido. Para preservar essas informações, você pode montar um diretório do sistema hospedeiro dentro do container. Esse diretório montado é conhecido como volume persistente, garantindo que seus dados sobrevivam mesmo que o container seja interrompido, removido ou recriado.

Anexar Armazenamento Persistente a um Container

Neste desafio, você criará um diretório no sistema hospedeiro para atuar como um volume persistente. Em seguida, executará um novo container, anexando esse volume a ele. Por fim, verificará se os dados gravados no volume a partir do container permanecem intactos após a reinicialização do mesmo.

Tarefas

  • Criar um diretório no sistema hospedeiro para servir como volume persistente.
  • Executar um novo container, anexando o volume persistente a ele.
  • Verificar se os dados gravados no volume de dentro do container persistem após o reinício do container.

Requisitos

  • Crie um diretório chamado /data no sistema hospedeiro. Este diretório será usado como o caminho de origem para a montagem do volume.
  • Execute um container usando a imagem nginx. O container deve ser nomeado como my-nginx-container.
  • Monte o diretório hospedeiro /data no diretório /usr/share/nginx/html dentro do container.
  • Dentro do container em execução, crie um arquivo em /usr/share/nginx/html/my-file.txt com o conteúdo exato: This is a persistent file.

Exemplo

Após concluir as tarefas, você deverá ser capaz de visualizar seu arquivo personalizado junto aos arquivos padrão do Nginx dentro do diretório montado no container. Você também pode verificar o diretório /data no hospedeiro para ver os mesmos arquivos.

[labex@host ~]$ podman exec my-nginx-container cat /usr/share/nginx/html/my-file.txt
This is a persistent file
[labex@host ~]$ podman exec my-nginx-container ls /usr/share/nginx/html
my-file.txt

Dicas

  • Utilize o comando sudo mkdir para criar o diretório /data.
  • Pode ser necessário alterar o proprietário com sudo chown e as permissões com sudo chmod para garantir que o processo do container consiga gravar no diretório.
  • A flag -v ou --volume no comando podman run é utilizada para montar um diretório do hospedeiro em um container. O formato é -v /caminho/no/hospedeiro:/caminho/no/container.
  • Em sistemas com SELinux habilitado, como o RHEL, você precisa configurar o contexto correto do SELinux para o diretório hospedeiro. Use sudo semanage fcontext -a -t container_file_t "/data(/.*)?" e sudo restorecon -R /data para configurar os rótulos do SELinux.
  • Se encontrar erros de permissão, tente definir a propriedade do diretório para corresponder ao ID de usuário do container (geralmente 1000:1000 para o nginx).
✨ Verificar Solução e Praticar

Resumo

Neste desafio, você aprendeu como fornecer armazenamento persistente para um container utilizando uma montagem de vínculo (bind mount). Ao montar um diretório do sistema hospedeiro em um container, você garante que os dados gerados pela sua aplicação persistam mesmo quando o container é interrompido, removido ou reiniciado. Esta técnica é fundamental para a execução de aplicações com estado (stateful) em containers.