Режим read-only root fs для контейнеров
В версии 2.1.0 для всех контейнеров включён режим read_only: true — корневая файловая система контейнера монтируется только для чтения.
Что изменилось
Все встроенные компоненты Памир уже обновлены: конфигурации docker-compose.*.yml каждого сервиса содержат корректные tmpfs-монтирования и именованные тома для всех путей, куда процесс пишет данные во время работы.
Действий для встроенных компонентов не требуется.
Что требует внимания
Пользовательские сервисы в docker-compose.additional.yml
Если вы добавляли собственные сервисы или переопределяли встроенные — проверьте, что каждый процесс, которому нужна запись на диск, имеет соответствующий том или tmpfs.
Типичные точки записи:
| Путь | Рекомендуемый тип |
|---|---|
Временные файлы, сокеты (/tmp, /run) | tmpfs |
| Конфигурационные файлы, обновляемые конфигом (Redis + confd, docker-tool) | Именованный том (volume) |
| Персистентные данные | Именованный том (volume) |
Экспортеры с управлением конфигурацией через confd
Если вы добавляли в docker-compose.additional.yml собственные экспортеры (аналогичные blackbox, snmp, json), конфигурация которых управляется через Redis + confd, — необходимо добавить именованный том для директории конфигурации.
Почему: confd при обновлении конфига атомарно переименовывает временный файл в целевой. При read_only: true это невозможно без записываемого тома на директорию конфигурации.
Важно: том должен быть смонтирован на директорию целиком, а не на отдельный файл. Только в этом случае Docker при первом запуске скопирует в том содержимое директории из образа (включая конфиг по умолчанию), и confd сможет обновить его из Redis.
Пример для docker-compose.additional.yml:
services:
blackbox-exporter:
volumes:
- type: volume
source: blackbox-exporter-config
target: /etc/blackbox_exporter
volumes:
blackbox-exporter-config:
Последовательность обновления
-
Обновите дистрибутив штатным способом через
pamir-installer. -
Если в
docker-compose.additional.ymlесть пользовательские сервисы с записью на диск — добавьте соответствующие тома илиtmpfs. -
Примените конфигурацию сервисов:
pamirctl start -
Проверьте отсутствие ошибок в журналах:
cd $HOME/.pamir
docker compose logs --tail 200При ошибках вида
read-only file systemв каком-либо сервисе — добавьте вdocker-compose.additional.ymlименованный том илиtmpfsдля соответствующего пути записи и перезапустите сервис.