Volumes de dados e montagens de arquivos usam Docker para armazenamento e compartilhamento de dados

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
Insira a descrição da imagem aqui

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.

おすすめ

転載: blog.csdn.net/tian830937/article/details/132287520