Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[DÚVIDA] Persistência de dados - Docker | tmpfs mounts (Linux) | pipes named (Windows)

Na documentação do Docker é claro que a montagem do tipo tmpfs só funciona no Linux.

"Se você estiver executando o Docker no Linux, terá uma terceira opção: tmpfs montagens. Quando você cria um contêiner com uma tmpfs montagem, o contêiner pode criar arquivos fora da camada gravável do contêiner."

Mas tem uma observação quanto a montagem no Windows:

[...] Se você estiver executando o Docker no Windows, o pipe nomeado será usado para armazenar arquivos na memória do sistema do host.

É possível validar o tipo da sua montagem com o comando no terminal:

-- criando um container: docker run -d -it --name tmptest --mount type=tmpfs,destination=/app nginx:latest

-- validando o tipo da montagem deste container docker inspect tmptest --format '' [{"Type":"tmpfs","Source":"","Destination":"/app","Mode":"","RW":true,"Propagation":""}]

Referência: https://docs.docker.com/storage/tmpfs/

Pelo que entendi nas aulas e lendo a documentação, esse tipo de montagem cria/manipula um arquivo no container e após o encerramento do mesmo, exclui tal arquivo, sendo útil para processos que usam internamente arquivos de senhas/credenciais. Exemplo: credenciais do GCP. Para acessar e manipular o Cloud do Google é necessário um arquivo de credenciais .json. A aplicação não rodaria sem esse arquivo, mas esse arquivo é confidencial. Com a montagem tmpfs esse arquivo seria criado na máquina host que irá executar o container, processaria a aplicação com as credenciais 'criadas' e após o fim da aplicação, apagaria tal arquivo, mantendo a segurança e o sigilo das informações.

Exemplo:

FROM ubuntu WORKDIR /app COPY . . RUN chmod +x start.sh CMD ["./start.sh"] VOLUME [ "/app/credentials:/credentials:tmpfs" ]

No exemplo acima, a pasta /app/credentials na máquina hospedeira é montada como um tmpfs na pasta /credentials no container. Desta forma, o arquivo .json de credenciais não será salvo na máquina hospedeira.

A dúvida é, o arquivo em algum momento é criado e está disponível em memória na máquina Host. Ele é acessível enquanto existe ou possui algum formato que o torna inacessível?

Quanto as outras afirmações, caso eu esteja errado ou entendido errado, por favor, me corrijam.

1 resposta
solução!

Resposta com auxilio da IA ChatGPT:

"Se você montar um arquivo ou pasta como tmpfs no Docker, ele não será acessível na máquina hospedeira depois que o container for criado. Isso significa que, durante a execução do container, o arquivo ou pasta estará disponível apenas dentro do container e não poderá ser acessado na máquina hospedeira.

Se você precisar acessar o arquivo de credenciais na máquina hospedeira, uma alternativa é usar um volume persistente. Isso permitirá que você acesse o arquivo de credenciais tanto na máquina hospedeira quanto dentro do container. No entanto, é importante ter cuidado ao gerenciar a segurança desse arquivo e garantir que ele não seja acessado por pessoas não autorizadas."