Partilhar via


Visão geral do armazenamento de contêineres

Este tópico fornece uma visão geral das diferentes maneiras como os contêineres usam o armazenamento no Windows. Os contêineres se comportam de forma diferente das máquinas virtuais quando se trata de armazenamento. Por natureza, os contêineres são criados para impedir que um aplicativo em execução neles grave o estado em todo o sistema de arquivos do host. Os contêineres usam um espaço de "rascunho" por padrão, mas o Windows também fornece um meio de manter o armazenamento.

Espaço Scratch

Por padrão, os contêineres do Windows usam armazenamento efêmero. Todas as E/S do contêiner acontecem em um "espaço de risco" e cada contêiner recebe seu próprio arranhão. A criação e a escrita de arquivos são capturadas no espaço temporário e não escapam para o host. Quando uma instância de contêiner é parada, todas as alterações que ocorreram na área temporária são descartadas. Quando uma nova instância de contentor é iniciada, um novo espaço temporário é fornecido para a instância.

Armazenamento em camada

Conforme descrito na na visão geral de contentores, as imagens de contentores são um pacote de arquivos expressas como uma série de camadas. O armazenamento em camada é todos os arquivos que são incorporados no contêiner. Toda vez que você docker pull então docker run esse recipiente - eles são os mesmos.

Onde as camadas são armazenadas e como alterá-las

Em uma instalação padrão, as camadas são armazenadas em C:\ProgramData\docker e divididas nos diretórios "image" e "windowsfilter". Você pode alterar onde as camadas são armazenadas usando a configuração docker-root, conforme demonstrado na documentação do Docker Engine no Windows.

Observação

Apenas NTFS é suportado para armazenamento em camada. Não há suporte para ReFS e volumes compartilhados de cluster (CSV).

Você não deve modificar nenhum arquivo nos diretórios de camada - eles são cuidadosamente gerenciados usando comandos como:

Operações suportadas no armazenamento em camadas

A execução de contêineres pode usar a maioria das operações NTFS, com exceção das transações. Isso inclui a configuração de ACLs, e todas as ACLs são verificadas dentro do contêiner. Se você quiser executar processos como vários usuários dentro de um contêiner, poderá criar usuários em seu Dockerfile com RUN net user /create ..., definir ACLs de arquivo e, em seguida, configurar processos para serem executados com esse usuário usando a diretiva USER do Dockerfile .

Armazenamento persistente

Os contêineres do Windows oferecem suporte a mecanismos para fornecer armazenamento persistente através de bind mounts e volumes. Para saber mais, consulte Armazenamento persistente em contêineres.

Limites de armazenamento

Um padrão comum para aplicativos do Windows é consultar a quantidade de espaço livre em disco antes de instalar ou criar novos arquivos ou como um gatilho para limpar arquivos temporários. Com o objetivo de maximizar a compatibilidade do aplicativo, a unidade C: em um contêiner do Windows representa um tamanho livre virtual de 20GB.

Alguns usuários podem querer substituir esse padrão e configurar o espaço livre para um valor menor ou maior. Isso pode ser feito através da opção "size" dentro da configuração "storage-opt".

Exemplo

Linha de comando: docker run --storage-opt "size=50GB" mcr.microsoft.com/windows/servercore:ltsc2019 cmd

Ou você pode alterar o arquivo de configuração do docker diretamente:

"storage-opts": [
    "size=50GB"
  ]

Dica

Esse método também funciona para a compilação do docker. Consulte o documento configurar o docker para obter mais detalhes sobre como modificar o arquivo de configuração do docker.