Репозитории
Репозиторий — это 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
Эта операция безвозвратно уничтожает зашифрованный образ диска. Действие не может быть отменено.