SystemdDoctor
служба не работает контейнеры окружение

Контейнеры не запускаются: среда выполнения не найдена

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

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

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

  1. Исполняемый файл среды выполнения вне пути службы

    Файл установлен в каталог, которого нет в пути службы. Служба его не находит.

  2. Среда выполнения не соответствует настройкам

    В настройках указана одна среда выполнения, а установлена другая. Служба ищет то, чего нет.

  3. Служба не перечитала настройки после правки

    Настройки читаются при запуске. Правка без перезапуска ничего не меняет, и разбор идёт по старому состоянию.

Диагностика

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

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

journalctl -u containerd -n 30 --no-pager

Путь и окружение службы контейнеров.

systemctl show containerd -p Environment

Отвечает ли служба и что сообщает о себе.

sudo ctr version 2>/dev/null || sudo crictl info 2>/dev/null | head

Решение

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

1. Исполняемый файл среды выполнения вне пути службы
Почему происходит
Файл установлен в каталог, которого нет в пути службы. Служба его не находит.
Как проверить
Посмотрите путь службы и расположение файла.
systemctl show containerd -p Environment -p ExecStart 2>/dev/null
command -v runc crun 2>/dev/null
Как исправить
Добавьте нужный каталог в путь службы или положите файл в каталог из стандартного пути. Полагаться на свой профиль нельзя: службы его не читают.
[Service]
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2. Среда выполнения не соответствует настройкам
Почему происходит
В настройках указана одна среда выполнения, а установлена другая. Служба ищет то, чего нет.
Как проверить
Посмотрите настройки и установленные среды.
sudo grep -iE "runtime|binary_name" /etc/containerd/config.toml 2>/dev/null | head
ls /usr/bin/runc /usr/bin/crun 2>/dev/null
Как исправить
Приведите настройки в соответствие с установленным. Смена среды выполнения требует правки настроек, а не только установки пакета.
3. Служба не перечитала настройки после правки
Почему происходит
Настройки читаются при запуске. Правка без перезапуска ничего не меняет, и разбор идёт по старому состоянию.
Как проверить
Посмотрите время правки настроек и время запуска службы.
ls -l --time-style=full-iso /etc/containerd/config.toml 2>/dev/null
systemctl show containerd -p ExecMainStartTimestamp 2>/dev/null
Как исправить
Перезапустите службу после правки настроек и убедитесь по журналу, что она их прочитала.

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

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

containerd[8400]: time="2026-09-15T18:20:11Z" level=error msg="failed to create shim task" error="failed to start shim: exec: \"runc\": executable file not found in $PATH"
crictl[8410]: E0915 18:20:11 remote_runtime.go:319] "CreateContainer failed"

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

Где встречается чаще всего

Источники

  • systemd.exec(5)
    Environment= и путь поиска исполняемых файлов службы.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено установкой среды выполнения в каталог вне пути службы.
    собственная проверка, systemd 255
    сверено 15 сентября 2026