Монтирование файловых систем в контейнер

Container Apps позволяет смонтировать том для доступа и обмена данными в контейнере через файловую систему. Существует два типа томов — постоянный и эфемерный, которые можно использовать для разных целей.

К контейнеру можно одновременно смонтировать и постоянный, и эфемерный тома. Количество томов, которое можно примонтировать к контейнеру, не ограничено.

Постоянный том

Постоянный том — это бакет сервиса Object Storage. Постоянный том используют для хранения данных, которые нужно оставить доступными даже после удаления или остановки контейнера, например:

  • общие данные: конфигурационные файлы, кеш от установленных пакетов и расширений;

  • файл базы данных — например, sqlite.

Основные возможности постоянного тома:

  • совместное использование постоянного тома разными контейнерами Container Apps в рамках проекта;

  • монтирование нескольких постоянных томов для одного контейнера;

  • все контейнеры, монтирующие общий постоянный том, могут получить доступ к файлам, записанным другими контейнерами.

Монтирование постоянного тома в контейнер

Монтирование постоянного тома доступно при создании контейнера или ревизии. Перед монтированием нужно создать бакет в сервисе Object Storage. Сервисы Object Storage и Container Apps должны находиться в одном проекте.

Путь (path)

При создании контейнера или ревизии в разделе Тома нужно выбрать бакет и в поле Путь указать путь монтирования. Директория внутри контейнера, к которой смонтируется бакет, будет доступна по указанному пути. По этому пути должна размещаться только пустая директория, иначе при инициализации контейнера может возникнуть ошибка, и монтированный бакет будет недоступен.

В поле Путь указывается абсолютный путь до директории в контейнере, к которой будет примонтирован постоянный том, например: /data.

Запрещено указывать следующие пути: '/', '/root', '/etc', '/bin', '/sbin', '/lib', '/dev', '/dev/tty', '/tmp', '/root', '/var', '/opt', '/home', '/usr', '/usr/bin', '/usr/sbin', '/usr/lib', '/usr/include', '/usr/share', '/usr/local'. Но их можно использовать как часть пути, например: '/usr/bin/somedir'.

Примечание

Если вы создаете в контейнере и постоянный, и эфемерный тома, пути монтирования у них должны быть разными.

Подпуть (subpath)

В параметрах монтирования опционально можно настроить Подпуть (subpath) — параметр, который позволяет монтировать не весь том, а только его часть (поддиректорию). Подпуть (subpath) указывает на конкретную поддиректорию внутри тома, которая будет смонтирована в указанную точку в контейнере (path). Это полезно, когда вам нужно подключить только определенные поддиректории из тома, а не весь том.

Подпуть (subpath) должен содержать относительный путь до поддиректории в томе, например: ./app-logs.

Сценарии использования подпути:

  • Изоляция файлов.

    Контейнеры могут использовать один и тот же том, но монтировать разные его части с помощью подпути. Например, можно смонтировать папку в бакете, указав путь до нее в поле Подпуть (subpath).

  • Избегание конфликтов.

    Если несколько контейнеров используют один том, использование подпути помогает избежать перезаписи файлов.

Объем хранилища постоянного тома

Объем хранилища постоянного тома зависит от объема бакета. Управлять объемом бакета можно в интерфейсе Object Storage по инструкции.

Настройки доступа на чтение и запись в постоянном томе

Доступ на чтение и запись данных в постоянном томе настраивается с помощью опций Только чтение. Опции доступны на уровне тома и на уровне параметров монтирования тома.

Опция Только чтение на уровне тома является глобальной. Если опция на уровне тома включена, то контейнер получит права только на чтение данных, вне зависимости от состояния опции Только чтение на уровне монтирования. Если опция на уровне тома отключена, то контейнер получит права на чтение или чтение и запись, в зависимости от состояния опции Только чтение на уровне монтирования.

Активируя опции в нужных комбинациях, вы можете гибко управлять правами на доступ к постоянному тому.

Только чтение на уровне монтирования — Включено

Только чтение на уровне монтирования — Выключено

Только чтение на уровне тома — Включено

Только чтение

Только чтение

Только чтение на уровне тома — Выключено

Только чтение

Чтение и запись

Эфемерный том

Эфемерный том — это временное хранилище, которое создается в среде Container Apps и существует только в течение жизни экземпляра контейнера. Эфемерный том создается при запуске экземпляра контейнера и удаляется при остановке контейнера, автоматическом удалении экземпляра контейнера при отсутствии запросов или удалении контейнера пользователем.

Эфемерный том используют для хранения временных файлов: например, кеша веб-приложения, логов, которые не нужно сохранять после завершения работы контейнера. Основные возможности эфемерного тома:

  • является временным хранилищем и исчезает без возможности восстановления при остановке, автоматическом удалении экземпляра контейнера при отсутствии запросов и удалении контейнера пользователем;

  • файлы, записанные в эфемерный том, видны только процессам, запущенным в текущем экземпляре контейнера;

  • файлы, загруженные во временного хранилище, недоступны для скачивания.

Монтирование эфемерного тома

Монтирование эфемерного тома доступно при создании контейнера или ревизии.

Эфемерный том создается при запуске экземпляра контейнера. При горизонтальном масштабировании каждый новый экземпляр контейнера будет иметь эфемерные тома в том количестве и с теми настройками (путь, подпуть, объем хранилища), которые были заданы при создании контейнера. При этом файлы, записанные в эфемерный том, будут видны только процессам, запущенным в текущем экземпляре контейнера. Получить доступ к эфемерному тому из другого экземпляра контейнера нельзя.

Путь (path)

При создании контейнера или ревизии в разделе Тома нужно выбрать бакет и в поле Путь указать путь монтирования. Директория, к которой смонтируется эфемерный том, будет доступна по указанному пути. По этому пути должна размещаться только пустая директория, иначе при инициализации контейнера может возникнуть ошибка, и монтированный эфемерный том будет недоступен.

В поле Path указывается абсолютный путь до директории, к которой будет примонтирован постоянный том, например: data или ./data.

Запрещено указывать следующие пути: '/', '/root', '/etc', '/bin', '/sbin', '/lib', '/dev', '/dev/tty', '/tmp', '/root', '/var', '/opt', '/home', '/usr', '/usr/bin', '/usr/sbin', '/usr/lib', '/usr/include', '/usr/share', '/usr/local'. Но их можно использовать как часть пути, например: '/usr/bin/somedir'.

Примечание

Если вы создаете в контейнере и постоянный, и эфемерный тома, пути монтирования у них должны быть разными.

Подпуть (subpath)

В параметрах монтирования опционально можно настроить Подпуть (subpath) — параметр, который позволяет монтировать не весь том, а только его часть (поддиректорию). Подпуть (subpath) указывает на конкретную поддиректорию внутри тома, которая будет смонтирована в указанную точку в контейнере (path). Это полезно, когда вам нужно подключить только определенные поддиректории из тома, а не весь том.

Подпуть (subpath) должен содержать относительный путь до поддиректории в томе, например: ./app-logs.

Подпуть (subpath) при монтировании эфемерного тома можно использовать для разграничения доступа к определенным файлам, поместив их в поддиреторию тома, и монтировать к контейнеру только эту поддиректорию.

Объем хранилища в эфемерном томе

Объем хранилища в эфемерном томе имеет лимит 1 ГБ.

При монтировании эфемерного тома необходимо заполнить поле Объем. Значение в поле указывается в МБ и ГБ и не должно превышать выделенный лимит. Сумма объемов всех используемых эфемерных томов не должна превышать выделенный лимит.

Настройки доступа на чтениеи и запись в эфемерном томе

Для эфемерного тома опция Только чтение доступна только на уровне параметров монтирования. Контейнер получит права на чтение или чтение и запись, в зависимости от состояния опции.

Evolution