SystemdDoctor
служба не работает docker зависимости

Docker: демон не запускается без containerd

Демон Docker не работает сам по себе: запуском контейнеров занимается containerd. Если тот не поднялся, Docker завершается с ошибкой подключения к его сокету, и разбираться надо с containerd, а не с Docker.

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

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

  1. Служба containerd не запущена или упала

    Docker подключается к сокету containerd при старте. Нет сокета — нет запуска.

  2. Путь к сокету containerd в ключах Docker неверен

    После ручной установки или обновления путь мог измениться. Ключ --containerd= указывает на несуществующий сокет.

  3. Свой containerd конфликтует с поставляемым Docker

    Установка containerd из отдельного пакета поверх версии от Docker приводит к двум конкурирующим службам.

Диагностика

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

Состояние обеих служб рядом.

systemctl status containerd docker --no-pager | head -20

Причина падения containerd.

journalctl -u containerd -n 40 --no-pager

Существует ли сокет containerd.

sudo ss -xln | grep containerd

Решение

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

1. Служба containerd не запущена или упала
Почему происходит
Docker подключается к сокету containerd при старте. Нет сокета — нет запуска.
Как проверить
Посмотрите состояние обеих служб.
systemctl status containerd --no-pager | head -8
systemctl status docker --no-pager | head -8
Как исправить
Запустите containerd и разберитесь, почему он падал: его журнал содержит причину.
sudo systemctl start containerd && sudo systemctl start docker
2. Путь к сокету containerd в ключах Docker неверен
Почему происходит
После ручной установки или обновления путь мог измениться. Ключ --containerd= указывает на несуществующий сокет.
Как проверить
Сравните ключ и фактический сокет.
systemctl cat docker | grep containerd
sudo ss -xln | grep containerd
Как исправить
Приведите путь к фактическому. Обычно это /run/containerd/containerd.sock.
3. Свой containerd конфликтует с поставляемым Docker
Почему происходит
Установка containerd из отдельного пакета поверх версии от Docker приводит к двум конкурирующим службам.
Как проверить
Посмотрите, сколько служб containerd есть в системе.
systemctl list-unit-files "*containerd*" --no-pager
command -v containerd
Как исправить
Оставьте одну реализацию: либо из репозитория Docker, либо системную. Смешение приводит к неочевидным сбоям.

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

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

dockerd[4500]: failed to start containerd: timeout waiting for containerd to start
dockerd[4500]: failed to start daemon: failed to dial "/run/containerd/containerd.sock": connection refused
systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: docker.service: Failed with result 'exit-code'.

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

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

Источники

  • Документация Docker: устройство демона и containerd документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено остановкой containerd при работающем docker.
    собственная проверка, systemd 255
    сверено 15 сентября 2026