Перейти к основному содержанию Перейти к навигации Перейти к нижнему колонтитулу

Репозитории

Создание, управление и работа с LUKS-зашифрованными репозиториями на удаленных машинах.

Репозитории

Репозиторий — это LUKS-зашифрованный образ диска на удаленном сервере. При монтировании он предоставляет:

  • Изолированную файловую систему для данных вашего приложения
  • Выделенный Docker-демон (отдельный от Docker хоста)
  • Уникальные loopback IP-адреса для каждого сервиса в подсети /26

Создание репозитория

rdc repo create my-app -m server-1 --size 10G
ОпцияОбязательноОписание
-m, --machine <name>ДаЦелевая машина, на которой будет создан репозиторий
--size <size>ДаРазмер зашифрованного образа диска (например, 5G, 10G, 50G)

В выводе будут показаны три автоматически сгенерированных значения:

  • GUID репозитория — UUID, идентифицирующий зашифрованный образ диска на сервере.
  • Учетные данные — случайная парольная фраза, используемая для шифрования/дешифрования тома LUKS.
  • Идентификатор сети — целое число (начинается с 2816, увеличивается на 64), определяющее IP-подсеть для сервисов данного репозитория.

Сохраните учетные данные в надежном месте. Это ключ шифрования вашего репозитория. При утере данные не могут быть восстановлены. Учетные данные хранятся в вашем локальном config.json, но не хранятся на сервере.

Монтирование и размонтирование

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

rdc repo mount my-app -m server-1       # Расшифровать и смонтировать
rdc repo unmount my-app -m server-1     # Размонтировать и зашифровать
ОпцияОписание
--checkpointСоздать контрольную точку перед монтированием/размонтированием

Проверка статуса

rdc repo status my-app -m server-1

Список репозиториев

rdc repo list -m server-1

Изменение размера

Установите точный размер репозитория или увеличьте на заданную величину:

rdc repo resize my-app -m server-1 --size 20G    # Установить точный размер
rdc repo expand my-app -m server-1 --size 5G      # Добавить 5G к текущему размеру

Перед изменением размера репозиторий должен быть размонтирован.

Форк

Создайте копию существующего репозитория в его текущем состоянии:

rdc repo fork my-app -m server-1 --tag my-app-staging

Эта команда создает новую зашифрованную копию с собственным GUID и идентификатором сети. Форк использует те же учетные данные LUKS, что и родительский репозиторий.

Проверка целостности

Проверьте целостность файловой системы репозитория:

rdc repo validate my-app -m server-1

Владение файлами

Установите владение файлами внутри репозитория на универсального пользователя (UID 7111). Обычно это необходимо после загрузки файлов с рабочей станции, которые приходят с вашим локальным UID.

rdc repo ownership my-app -m server-1

Команда автоматически обнаруживает директории данных Docker-контейнеров (записываемые bind-маунты) и исключает их. Это предотвращает поломку контейнеров, которые управляют файлами с собственными UID (например, MariaDB=999, www-data=33).

ОпцияОписание
--uid <uid>Установить пользовательский UID вместо 7111
--forceПропустить обнаружение Docker-томов и изменить владельца для всех файлов

Для принудительного изменения владельца всех файлов, включая данные контейнеров:

rdc repo ownership my-app -m server-1 --force

Предупреждение: Использование --force на работающих контейнерах может их сломать. Сначала остановите сервисы с помощью rdc repo down, если необходимо.

Подробное руководство по использованию ownership при миграции проектов см. в Руководстве по миграции.

Шаблон

Примените шаблон для инициализации репозитория файлами:

rdc repo template my-app -m server-1 --file ./my-template.tar.gz

Удаление

Безвозвратно уничтожьте репозиторий и все данные внутри него:

rdc repo delete my-app -m server-1

Эта операция безвозвратно уничтожает зашифрованный образ диска. Действие не может быть отменено.