Репозитории
Репозиторий, это LUKS-зашифрованный образ диска на удаленном сервере. При монтировании он предоставляет:
- Изолированную файловую систему для данных вашего приложения
- Выделенный Docker-демон (отдельный от Docker хоста)
- Уникальные loopback IP-адреса для каждого сервиса в подсети /26
Создание репозитория
rdc repo create --name my-app -m server-1 --size 10G
| Опция | Обязательно | Описание |
|---|---|---|
-m, --machine <name> | Да | Целевая машина, на которой будет создан репозиторий |
--size <size> | Да | Размер зашифрованного образа диска (например, 5G, 10G, 50G) |
--skip-router-restart | No | Skip restarting the route server after the operation |
В выводе будут показаны три автоматически сгенерированных значения:
- GUID репозитория, UUID, идентифицирующий зашифрованный образ диска на сервере.
- Учетные данные, случайная парольная фраза, используемая для шифрования/дешифрования тома LUKS.
- Идентификатор сети, целое число (начинается с 2816, увеличивается на 64), определяющее IP-подсеть для сервисов данного репозитория.
Сохраните учетные данные в надежном месте. Это ключ шифрования вашего репозитория. При утере данные не могут быть восстановлены. Учетные данные хранятся в вашем локальном
config.json, но не хранятся на сервере.
Монтирование и размонтирование
Монтирование расшифровывает репозиторий и делает его файловую систему доступной. Размонтирование закрывает зашифрованный том.
rdc repo mount --name my-app -m server-1 # Расшифровать и смонтировать
rdc repo unmount --name my-app -m server-1 # Размонтировать и зашифровать
| Опция | Описание |
|---|---|
--checkpoint | Создать контрольную точку CRIU перед монтированием/размонтированием (для контейнеров с меткой rediacc.checkpoint=true) |
--skip-router-restart | Skip restarting the route server after the operation |
Проверка статуса
rdc repo status --name my-app -m server-1
Список репозиториев
rdc repo list -m server-1
Изменение размера
Установите точный размер репозитория или увеличьте на заданную величину:
rdc repo resize --name my-app -m server-1 --size 20G # Установить точный размер
rdc repo expand --name my-app -m server-1 --size 5G # Добавить 5G к текущему размеру
Перед изменением размера репозиторий должен быть размонтирован.
Форк
Создайте копию существующего репозитория в его текущем состоянии:
rdc repo fork --parent my-app --tag staging -m server-1
Форки используют модель name:tag: результирующий форк называется my-app:staging. Эта команда создает новую зашифрованную копию с собственным GUID и идентификатором сети, разделяя имя родительского репозитория. Форк использует те же учетные данные LUKS, что и родительский репозиторий.
Проверка целостности
Проверьте целостность файловой системы репозитория:
rdc repo validate --name my-app -m server-1
Владение файлами
Установите владение файлами внутри репозитория на универсального пользователя (UID 7111). Обычно это необходимо после загрузки файлов с рабочей станции, которые приходят с вашим локальным UID.
rdc repo ownership --name my-app -m server-1
Команда автоматически обнаруживает директории данных Docker-контейнеров (записываемые bind-маунты) и исключает их. Это предотвращает поломку контейнеров, которые управляют файлами с собственными UID (например, MariaDB=999, www-data=33).
| Опция | Описание |
|---|---|
--uid <uid> | Установить пользовательский UID вместо 7111 |
--skip-router-restart | Skip restarting the route server after the operation |
Для принудительного изменения владельца всех файлов, включая данные контейнеров:
rdc repo ownership --name my-app -m server-1
Подробное руководство по использованию ownership при миграции проектов см. в Руководстве по миграции.
Шаблон
Примените шаблон для инициализации репозитория файлами:
rdc repo template apply --name my-template -m server-1 -r my-app --file ./my-template.tar.gz
Удаление
Безвозвратно уничтожьте репозиторий и все данные внутри него:
rdc repo delete --name my-app -m server-1
Эта операция безвозвратно уничтожает зашифрованный образ диска. Действие не может быть отменено.