Linux Cannot connectВысокая

Docker Daemon не запущен: причины и быстрое решение в Linux

Статья объясняет, что означает ошибка 'Docker Daemon not running' в Linux, и предоставляет пошаговые инструкции по запуску, диагностике и настройке службы Docker через systemd для основных дистрибутивов.

Обновлено 16 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 22.04+Debian 11+CentOS 8+/RHEL 8+Fedora 35+

Что означает ошибка "Cannot connect to the Docker daemon"

Ошибка Cannot connect to the Docker daemon (или docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?) означает, что клиентская утилита docker (например, команда docker ps) не может установить соединение с фоновым процессом — демоном Docker (dockerd).

Демон — это сервис, который управляет всеми объектами Docker: образами, контейнерами, сетями, томами. Без работающего демона любые команды docker бесполезны. Ошибка появляется мгновенно, сразу после ввода команды, и обычно не содержит длинного трассировочного стека.

Причины возникновения

  1. Служба Docker остановлена. Наиболее частая причина. Демон просто не запущен в системе.
  2. Служба завершилась с ошибкой (failed). Docker пытался запуститься, но столкнулся с проблемой (например, конфликт порта, ошибка в конфигурации daemon.json, нехватка памяти).
  3. Docker не настроен на автозагрузку. После перезагрузки компьютера служба не стартует автоматически.
  4. Конфликт портов. Если в /etc/docker/daemon.json или в аргументах запуска указан TCP-порт (например, -H tcp://0.0.0.0:2375), а этот порт уже занят другим приложением, демон не сможет запуститься.
  5. Повреждение файлов Docker. Критические файлы пакета (бинарники, конфиги) могли быть повреждены при обновлении или аварийном завершении.
  6. Недостаток прав у пользователя. Пользователь, запускающий docker, не имеет прав на доступ к сокету /var/run/docker.sock (хотя это обычно вызывает Permission denied, а не "daemon not running", но может быть связано).

Способ 1: Запуск и проверка статуса службы через systemd

В современных дистрибутивах Linux (Ubuntu, Debian, CentOS 7+, RHEL 7+, Fedora) Docker управляется через systemd.

  1. Проверьте статус службы:
    sudo systemctl status docker
    

    Ищите строку Active:. Если она inactive (dead) или failed — служба не работает.
  2. Запустите службу:
    sudo systemctl start docker
    
  3. Включите автозагрузку (чтобы не запускать вручную после каждой перезагрузки):
    sudo systemctl enable docker
    

    Вы увидите создание символической ссылки.
  4. Убедитесь, что демон работает:
    sudo systemctl is-active docker
    

    Команда должна вернуть active.
  5. Попробуйте выполнить команду Docker:
    docker version
    

    Или
    docker ps
    

💡 Совет: Если systemctl start docker завершается мгновенно без ошибок, но status показывает failed, посмотрите логи: sudo journalctl -u docker.service --no-pager -n 50.

Способ 2: Диагностика через логи systemd

Если служба не запускается, её логи содержат причину сбоя.

  1. Просмотрите последние записи лога службы Docker:
    sudo journalctl -u docker.service --no-pager -n 100
    

    Ищите строки, начинающиеся с docker[...]: или просто сообщения об ошибках (error, failed, cannot).
  2. Типичные ошибки в логах и их решения:
    • Error starting daemon: pid file found, ensure Docker is not running or delete /var/run/docker.pid — удалите файл блокировки: sudo rm /var/run/docker.pid и попробуйте снова.
    • failed to start daemon: port is already allocated — конфликт порта. Найдите процесс, занимающий порт (по умолчанию для Unix-сокета конфликта нет, но если используется TCP): sudo lsof -i :2375. Остановите конфликтующий процесс или измените порт Docker в /etc/docker/daemon.json.
    • Error initializing graphdriver: overlay — проблема с драйвером хранения (overlay/overlay2). Часто решается обновлением ядра или переключением драйвера в daemon.json.

Способ 3: Проверка и настройка конфигурационного файла

Некорректный JSON в /etc/docker/daemon.json может помешать запуску.

  1. Проверьте синтаксис файла:
    sudo cat /etc/docker/daemon.json | python3 -m json.tool > /dev/null && echo "JSON valid" || echo "JSON invalid"
    

    Если вывод JSON invalid, отредактируйте файл (sudo nano /etc/docker/daemon.json) и исправьте ошибки (лишние запятые, неверные кавычки).
  2. Временно отключите конфигурацию для теста:
    sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak
    sudo systemctl restart docker
    

    Если после этого Docker запустился — проблема в конфигурации. Восстанавливайте настройки по одной, перезапуская службу после каждого изменения.

Способ 4: Проверка системных ресурсов и зависимостей

Демону Docker могут требоваться определённые ресурсы или модули ядра.

  1. Убедитесь, что модуль ядра overlay загружен (для драйвера overlay2):
    lsmod | grep overlay
    

    Если вывод пуст, загрузите модуль: sudo modprobe overlay.
  2. Проверьте, достаточно ли места в разделе /var. Docker хранит образы и данные там. Если место закончилось, демон может не запуститься:
    df -h /var
    
  3. Для дистрибутивов на основе RHEL/CentOS: Убедитесь, что установлен пакет containerd.io и он работает:
    sudo systemctl status containerd
    

Способ 5: Полная переустановка Docker (если другие способы не помогли)

  1. Удалите пакеты Docker: Для Debian/Ubuntu:
    sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    sudo rm -rf /var/lib/docker /etc/docker
    

    Для RHEL/CentOS/Fedora:
    sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    sudo rm -rf /var/lib/docker /etc/docker
    
  2. Установите Docker заново, следуя официальному гайду для вашего дистрибутива. Это гарантирует получение корректных зависимостей и конфигурационных файлов.

Профилактика

  • Всегда включайте автозагрузку: После первой установки Docker сразу выполните sudo systemctl enable docker.
  • Следите за обновлениями ядра: При обновлении ядра (особенно в RHEL-совместимых дистрибутивах) может потребоваться перезагрузка. После перезагрузки проверяйте статус Docker.
  • Не редактируйте /etc/docker/daemon.json без проверки синтаксиса. Используйте валидатор JSON или команду python3 -m json.tool.
  • Регулярно проверяйте место на диске, особенно в /var/lib/docker. Логи контейнеров могут быстро расти.
  • Избегайте запуска Docker вручную (dockerd &). Всегда используйте systemctl, чтобы systemd мог корректно управлять процессом и перехватывать его логи.

Часто задаваемые вопросы

Почему Docker работает после перезагрузки, но не после выхода из системы?
Что делать, если `systemctl start docker` завершается с ошибкой?
Может ли отсутствие прав у пользователя вызывать эту ошибку?
В чём разница между `dockerd` и `docker.service`?

Полезное

Проверьте текущий статус службы Docker
Запустите службу Docker вручную
Включите автозагрузку службы
Проверьте, не конфликтует ли порт
Переустановите Docker (крайняя мера)