I. Introdução
Por padrão, todos os arquivos criados dentro de um contêiner Docker estão disponíveis apenas dentro do contêiner. Depois que o contêiner é excluído, os dados também são excluídos. Embora normalmente não excluamos o contêiner, uma vez que o host falha e recriamos o serviço de recuperação de contêiner, os arquivos criados pelo contêiner anterior serão perdidos, o que nos trará problemas desnecessários. Além disso, como os arquivos no contêiner desinstalaram a "camada gravável" do Docker, o desempenho também diminuirá, por isso precisamos gravar os dados no host para facilitar o armazenamento, a transferência e o compartilhamento de dados entre os contêineres. desempenho de leitura e escrita, etc.
1. Conteúdo principal deste artigo
Use Golang para fornecer serviços HTTP, gravar logs em disco e criar imagens. Introdução às
vantagens e recursos da vinculação de volume de dados, montagem de arquivos e montagem de cache tmpfs.
Vincule o volume de dados (Volume) ao diretório especificado do contêiner para obter persistência dos dados do contêiner. armazenamento e compartilhamento.
Montar arquivos/diretórios do host (montagens de ligação) no diretório designado do contêiner para obter armazenamento persistente e compartilhamento de dados do contêiner.
Montar o cache tmpfs do host no diretório designado do contêiner.
2. Volumes de dados e montagem
1. Volume de dados (Volume)
Um volume é um diretório ou arquivo que existe em um ou mais contêineres e é montado no contêiner pelo Docker. No entanto, o volume não pertence ao Union File System (Union FileSystem), portanto, pode ignorar o Union File System para fornecer algum armazenamento persistente ou dados compartilhados. Vários contêineres podem montar o mesmo volume de dados
Os volumes são projetados para persistência de dados e são completamente independentes do ciclo de vida do contêiner, portanto, o Docker não excluirá seu volume de dados montado quando o contêiner for excluído.
Volume de dados (Volume) é o método de armazenamento de persistência de dados oficialmente recomendado pelo Docker. É também a solução de armazenamento de persistência Docker mais madura no momento. Possui as seguintes vantagens/recursos.
- Os volumes de dados são mais fáceis de fazer backup ou migrar do que montagens vinculadas
- Os volumes de dados podem ser gerenciados por meio de comandos Docker CLI ou API Docker
- Os volumes de dados estão disponíveis para contêineres Linux e Windows
- Os volumes de dados suportam armazenamento em hosts remotos e suportam armazenamento criptografado
- Os dados do volume de dados não suportam visualização ou gerenciamento direto no host.
- O volume de dados pode pré-ocupar espaço no host para evitar que o disco seja ocupado e faça com que o contêiner não funcione corretamente.
- Em ambientes de desenvolvimento Mac e Windows, os volumes de dados têm melhor desempenho do que montagens vinculadas.
- Volumes de dados podem ser usados para compartilhar dados entre contêineres
- As alterações no volume podem entrar em vigor diretamente
- As alterações no volume de dados não serão incluídas nas atualizações do espelho
- O ciclo de vida de um volume de dados dura até que nenhum contêiner o utilize.
2. Vincular montagens
As montagens de ligação são um método de armazenamento persistente de dados fornecido pelo Docker nos primeiros dias. Podemos montar o diretório/arquivo host no contêiner e vinculá-lo ao diretório/arquivo especificado pelo contêiner. Ele tem as seguintes vantagens/características
A montagem de diretórios/arquivos é muito conveniente, mas o backup e a migração de arquivos são relativamente problemáticos.
Diretórios/arquivos montados não podem ser gerenciados através do próprio Docker.
O espaço em disco usado por diretórios/arquivos montados pode ser afetado por outros programas.
Diretórios/arquivos montados Pode ser facilmente visualizado e gerenciado no host.
O diretório/arquivo montado pode ser usado para compartilhar dados entre contêineres. A montagem de ligação é uma tradução literal, prefiro chamá-la de montagem de arquivo.
3. Montagem de cache (montagens tmpfs)
O Docker fornece montagem tmpfs (um sistema de arquivos baseado em memória) no Linux, que permite ao contêiner colocar conteúdo na memória do host para leitura e gravação. Possui as seguintes vantagens/recursos
Armazenado na memória, possui bom desempenho de leitura e gravação.
Armazenado na memória, é adequado para armazenar algumas informações confidenciais, ou dados que são descartados quando o contêiner é fechado
só podem ser usados por contêineres Docker rodando em Linux (?), e não pode ser usado para Embora a documentação oficial diga que o compartilhamento de dados entre contêineres só pode ser usado no Docker no ambiente Linux, testei-o com base no Docker Desktop 4.14 no Windows e é possível. Acho que o Docker suporta oficialmente esse recurso após um certo Versão Docker Desktop. Testado, mas não atualizou a documentação
4. Diagrama de relacionamento
Esta imagem pode nos ajudar a entender esses três métodos. Posteriormente, me referirei a eles como vinculação de volume de dados, montagem de arquivo e montagem de cache.