Compartilhar via


Visão geral do armazenamento de contêiner

Este tópico fornece uma visão geral das diferentes maneiras pelas quais 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 dentro deles grave o estado em todo o sistema de arquivos do host. Os contêineres usam um espaço "rascunho" por padrão, mas o Windows também possibilita persistir o armazenamento.

Espaço de rascunho

Os contêineres do Windows por padrão usam o armazenamento efêmero. Todas as operações de E/S de contêiner ocorrem em um "espaço temporário", e cada contêiner obtém o próprio espaço temporário. A criação de arquivos e as gravações de arquivos são capturadas no espaço de temporário e não são transmitidas para o host. Quando uma instância de contêiner é desligada, todas as alterações que ocorreram no espaço temporário são descartadas. Quando uma nova instância de contêiner é iniciada, um novo espaço temporário é fornecido para a instância.

Armazenamento de camadas

Conforme descrito na visão geral de contêineres, as imagens de contêiner são um pacote de arquivos expressos como uma série de camadas. O armazenamento de camadas consiste em todos os arquivos incorporados ao contêiner. Sempre que você docker pull e então docker run esse contêiner, tudo fica igual.

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

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

Nota

Há suporte apenas para NTFS para armazenamento em camadas. Não há suporte para ReFS e CSV (volumes compartilhados de cluster).

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 de 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 configurar processos para execução com esse usuário usando a diretiva Dockerfile USER.

Armazenamento Persistente

Os contêineres do Windows dão suporte a mecanismos para fornecer armazenamento persistente por meio de montagens de associação 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 20 GB.

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 por meio da opção "tamanho" 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 o build do Docker. Confira o documento configurar o docker para obter mais detalhes sobre como modificar o arquivo de configuração do docker.