Pergunta geral sobre os componentes internos do Docker e contêineres em execução no Kubernetes ao usar o mecanismo do Docker.
Os contêineres do Docker são efêmeros, o que significa que, se um contêiner for destruído, todos os dados que foram gravados nas partes internas desse contêiner desaparecem. Isso me leva à minha pergunta:
Se alguém iniciar um contêiner contendo um aplicativo que grava um arquivo em um diretório que não é suportado por um volume, onde o referido arquivo realmente é gravado? É realmente gravado em disco? É realmente gravado na memória principal e, em seguida, apenas liberado no disco quando docker stop
ocorre? É outra coisa?
Mesma(s) pergunta(s) para um contêiner do Docker que é um pod em execução no Kubernetes. A mecânica é a mesma?
Os dados do Docker são mantidos apenas na memória do host para "montagens tmpfs". Você pode ler sobre como criar tais montagens no artigo Usar montagens tmpfs .
Todos os outros dados não persistentes são mantidos na camada gravável do contêiner, que é um sistema de arquivos inteiro gerenciado pelo driver de armazenamento . Esses dados não persistem depois que o contêiner é excluído (mas persistem se ele for suspenso ou interrompido apenas) e as velocidades de leitura e gravação são inferiores ao desempenho do sistema de arquivos nativo, pois passam pelo driver de armazenamento antes de passar para o host Driver de disco.
Mais de um driver de armazenamento está disponível para o Docker, conforme descrito no artigo Drivers de armazenamento do Docker .
Não está especificado na documentação onde a camada gravável de um container é armazenada no disco, provavelmente para deixar a cada implementação de um driver de armazenamento a liberdade de fazer a melhor escolha.
Para ver qual driver de armazenamento seu mecanismo do Docker está usando, execute:
Se você estiver usando o driver de armazenamento padrão do Docker, poderá ver algo como isto:
Usando as informações acima, meu palpite seria que as camadas graváveis de todos os contêineres seriam armazenadas na pasta
/var/lib/docker/aufs
, ondeaufs
significa o driver de armazenamento usado (mas isso é apenas um palpite).