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
/datano 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 comomy-nginx-container. - Monte o diretório hospedeiro
/datano diretório/usr/share/nginx/htmldentro do container. - Dentro do container em execução, crie um arquivo em
/usr/share/nginx/html/my-file.txtcom 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 mkdirpara criar o diretório/data. - Pode ser necessário alterar o proprietário com
sudo chowne as permissões comsudo chmodpara garantir que o processo do container consiga gravar no diretório. - A flag
-vou--volumeno comandopodman 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(/.*)?"esudo restorecon -R /datapara 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).
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.



