Поделиться через


Общие сведения о хранилище контейнеров

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

Пространство с нуля

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

Хранилище слоев

Как описано в Обзоре контейнеров , образы контейнеров — это набор файлов, выраженные в виде ряда слоев. Хранилище слоев — это все файлы, встроенные в контейнер. Каждый раз, когда вы docker pull, а затем docker run этот контейнер, он становится таким же.

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

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

Заметка

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

Не следует изменять файлы в каталогах слоев. Они тщательно управляются с помощью таких команд, как:

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

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

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

Контейнеры 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. Дополнительные сведения об изменении файла конфигурации Docker см. в документе по настройке Docker.