SystemdDoctor

Контейнеры пользователя останавливаются после выхода из системы

Контейнеры без прав root запускаются пользовательскими службами. Менеджер пользователя завершается при выходе из системы и уносит их с собой. Решение — разрешить менеджеру работать без входа; иначе контейнеры живут только до конца сеанса.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Продолжение работы без входа не включено

    Менеджер пользователя завершается при выходе последнего сеанса. Все его службы останавливаются.

  2. Unit-файлы созданы, но не включены

    Файл службы контейнера создан в пользовательском каталоге и не включён. После перезагрузки контейнер не поднимается.

  3. Контейнеры без прав root упираются в пределы пользователя

    Число процессов и описателей у пользовательского сеанса ограничено отдельно. Контейнеры упираются в них раньше, чем в системные.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Работает ли менеджер пользователя без входа.

loginctl show-user "$USER" -p Linger

Состояние служб контейнеров пользователя.

systemctl --user list-units "*container*" --no-legend

Журнал службы контейнера.

journalctl --user -u container-myapp.service -n 20 --no-pager

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Продолжение работы без входа не включено
Почему происходит
Менеджер пользователя завершается при выходе последнего сеанса. Все его службы останавливаются.
Как проверить
Посмотрите состояние продолжения работы.
loginctl show-user "$USER" -p Linger
systemctl --user list-units "*container*" --no-legend | head
Как исправить
Включите продолжение работы для пользователя. Без этого пользовательские службы не годятся для постоянно работающих контейнеров.
sudo loginctl enable-linger deploy
2. Unit-файлы созданы, но не включены
Почему происходит
Файл службы контейнера создан в пользовательском каталоге и не включён. После перезагрузки контейнер не поднимается.
Как проверить
Посмотрите состояние пользовательских служб.
systemctl --user list-unit-files "*container*" --no-legend
systemctl --user is-enabled container-myapp.service 2>/dev/null
Как исправить
Включите службу в пользовательской области и перечитайте описания. Включение в системной области для пользовательских служб не работает.
systemctl --user daemon-reload && systemctl --user enable --now container-myapp.service
3. Контейнеры без прав root упираются в пределы пользователя
Почему происходит
Число процессов и описателей у пользовательского сеанса ограничено отдельно. Контейнеры упираются в них раньше, чем в системные.
Как проверить
Посмотрите пределы пользовательского среза.
systemctl show "user-$(id -u).slice" -p TasksMax -p MemoryMax
ulimit -u
Как исправить
Поднимите пределы пользовательского среза, если контейнерам их не хватает. Системные пределы на пользовательские службы не влияют.

Пример вывода

Контейнер остановился вместе с сеансом пользователя. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

systemd[1520]: Stopping container-myapp.service - Podman container-myapp.service...
systemd[1520]: Stopped container-myapp.service.
systemd[1]: user@1001.service: Deactivated successfully.

$ loginctl show-user deploy -p Linger
Linger=no

Связанные ошибки

Источники

  • loginctl(1)
    Продолжение работы менеджера пользователя без входа.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Документация Podman: службы systemd для контейнеров документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на systemd 255: выход из системы останавливает службы пользователя без продолжения работы.
    собственная проверка, systemd 255
    сверено 15 сентября 2026