Обзор хранилища контейнера

В этом разделе приводятся общие сведения о различных способах использования контейнерами хранилища в Windows. В случае хранилища контейнеры ведут себя иначе, чем виртуальные машины. По сути, контейнеры создаются так, чтобы выполняющееся в них приложение не могло записывать свое состояние в файловую систему узла. По умолчанию контейнеры используют "вспомогательное" пространство, но Windows также предоставляет средства для хранения в постоянном хранилище.

Область временных файлов

Контейнеры Windows по умолчанию используют временное хранилище. Все операции ввода-вывода контейнера выполняются во "вспомогательном пространстве", и у каждого контейнера такое пространство свое. Данные о создании и записи файлов записываются во вспомогательное пространство и не отправляются на узел. При остановке экземпляра контейнера все изменения, произошедшие во вспомогательном пространстве, сбрасываются. При запуске нового экземпляра контейнера ему предоставляется новое вспомогательное пространство.

Хранилище уровня

Как описано в статье Общие сведения о контейнерах, образы контейнеров представляют собой набор файлов, представленный в виде совокупности слоев. Хранилище слоя содержит все файлы, которые встроены в контейнер. При каждом выполнении операции docker pull и docker run с контейнером результаты совпадают.

Где хранятся уровни и как их изменить

При установке по умолчанию уровни хранятся в C:\ProgramData\docker и распределяются между каталогами «image» и «windowsfilter». Вы можете изменить место хранения уровней, используя конфигурацию docker-root, как показано в документации по подсистеме Docker в Windows.

Примечание

Для хранилища уровня поддерживается только файловая система NTFS. ReFS и общие тома кластера (CSV) не поддерживаются.

Вам не следует менять какие-либо файлы в каталогах уровня — они тщательно контролируются с помощью таких команд, как:

Поддерживаемые операции хранилища уровня

Запущенные контейнеры могут использовать большинство операций NTFS, за исключением транзакций. К ним относятся настройка списков управления доступом, при этом все списки проверяются внутри контейнера. Если вы хотите запускать процессы как множество пользователей в контейнере, вы можете создать пользователей в Dockerfile с помощью RUN net user /create ..., настроить списки управления доступом к файлу, а затем настроить процессы для выполнения с этим пользователем с помощью директивы Dockerfile USER.

Постоянное хранилище

Контейнеры Windows поддерживают механизмы для обеспечения постоянного хранения с помощью привязок и томов. Дополнительные сведения см. в разделе Постоянное хранилище в контейнерах.

Ограничения хранилища

Обычно приложения для Windows запрашивают объем свободного места на диске перед установкой или созданием новых файлов, а также для удаления временных файлов. Для обеспечения максимальной совместимости приложений диск C: в контейнере Windows представляет виртуальное свободное пространство размером 20 ГБ.

Некоторым пользователям может потребоваться переопределить это значение по умолчанию и настроить свободное пространство меньшей или большей емкости. Это можно сделать с помощью параметра "size" в конфигурации "storage-opt".

Пример

Командная строка: docker run --storage-opt "size=50GB" mcr.microsoft.com/windows/servercore:ltsc2019 cmd

Вы также можете изменить файл конфигурации Docker напрямую.

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

Совет

Этот способ подходит также для команды docker build. В документе Настройка docker представлены дополнительные сведения об изменении файла конфигурации docker.