Главная / Справочник ошибок / Установка и обновление
Сборка образа сервиса RX в Docker без root падает на создании пользователя
docker.errors.BuildError: returned a non-zero code: 1 (USER_ID, rootless)
«docker.errors.BuildError: The command '/bin/sh -c if [ $USER_ID = 0 ] ... groupadd ... useradd ...' returned a non-zero code: 1» при установке Directum RX в Docker без root: SELinux и драйвер fuse-overlayfs или конфликт USER_ID с зарезервированными группами. Что пишет справка вендора.
Что это значит
При запуске сервисов RX в Docker без прав root (rootless) Directum Launcher собирает образы с пользователем, идентификатор которого задан в USER_ID. Если команда создания пользователя в образе падает, установка останавливается с этой ошибкой. Справка вендора называет две причины:
- включён SELinux, а rootless Docker работает с драйвером хранилища
fuse-overlayfs; USER_IDизCONTAINER_BUILD_ARGSпересекается с зарезервированными группами в контейнерах (например, у Centrifugo) из диапазонаsubgid.
Как проверить
uname -r # ядро не старше 5.11 нужно для overlay2 в rootless-режиме
docker info | grep "Storage Driver"
Что сделать
- Перевести rootless Docker на драйвер
overlay2: в~/.config/docker/daemon.jsonуказать{"storage-driver": "overlay2"}и перезапустить службу пользователя (systemctl --user restart docker). - При конфликте идентификаторов задать
USER_IDвне зарезервированных диапазонов, обычно больше 1000. - Справка вендора для этого случая предлагает также отключить SELinux. Если в организации это запрещено требованиями безопасности, начните с драйвера хранилища и согласуйте отключение отдельно: на сертифицированных ОС это нарушение условий эксплуатации (подробнее).
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать