Бакет как Volume
Монтированный бакет Yandex Cloud ObjectStorage можно использовать как Volume Docker контейнера. Бакет указывается как обычная директория в Docker compose:
Для доступа к файлам бакета из контейнера необходимо в конфигурации
демона, монтирующего бакет задать режим кэширования файлов writes
для доступа к имеющимся в бакете файлам:
- In this mode all reads and writes are buffered to and from disk. When data is read from the remote this is buffered to disk as well.
А также разрешить доступ root пользователю к монтированной директории.
- Необходимо для обхода ошибки запуска Docker контейнера с монтированным бакетом в качестве volume.
Порядок запуска
Запущенный Docker контейнер может не иметь доступа к файлам бакета, если бакет был смонтирован после запуска контейнера.
Для решения этой проблемы необходимо настроить корректный порядок запуска:
- Монтирование бакета.
- Запуск Docker контейнера.
Т.к. монтирование бакета выполняется с помощью демона пользователя, в конфигурации демона можно задать шаги для остановки docker-service
и его запуска уже после монтирования директории.
В секцию [Service]
демона добавьте команды для остановки docker-service
перед запуском rclone
и его запуска после завершения:
ExecStartPre
остановитdocker
перед запускомrclone
.ExecStartPost
запуститdocker
после успешного стартаrclone
.
Обновите конфигурацию демонов пользователя:
Разрешите пользователю управлять docker
через sudo
без пароля:
- Откройте файл sudoers:
- Добавьте строку:
- Перезапустите
rclone<%i>.service
:
Последнее изменение: 21.09.2024 20:15