Вы запускаете Docker-команду, а в ответ получаете холодное сообщение \"Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?\". Эта ошибка — как закрытая дверь в мир контейнеризации. Не паникуйте! В 99% случаев проблема решается за несколько минут. Давайте разберемся, почему демон Docker отказывается работать и как его \"оживить\".
Что такое Docker Daemon и почему он важен
Docker Daemon (dockerd) — это фоновый процесс, который управляет всеми операциями Docker: созданием контейнеров, работой с образами, сетями и томами. Это \"мозг\" Docker. Когда вы вводите команду docker ps или docker run, CLI обращается именно к демону. Если демон не запущен — связь обрывается, и вы видите роковую ошибку.
Демон Docker обычно требует прав суперпользователя (root). На Linux он запускается как системная служба, на Windows и macOS — через Docker Desktop.
Основные причины ошибки
Ошибка возникает по нескольким ключевым причинам:
- Служба Docker не запущена — самая частая ситуация, особенно после перезагрузки системы.
- Проблемы с правами доступа — ваш пользователь не состоит в группе
docker. - Конфликт версий или неправильная установка — особенно после обновления системы.
- Конфликт с другими контейнерными платформами — например, с Podman или старыми версиями Docker.
- Повреждение сокета — файл
/var/run/docker.sockудален или недоступен.
Пошаговое решение для Linux
1. Проверка статуса службы
Откройте терминал и выполните команду в зависимости от вашего менеджера служб:
- Systemd (Ubuntu, Debian, CentOS 7+):
sudo systemctl status docker - SysVinit (старые системы):
sudo service docker status
Если служба неактивна, запустите её: sudo systemctl start docker (или sudo service docker start).
2. Добавление пользователя в группу docker
Чтобы не использовать sudo для каждой команды:
sudo usermod -aG docker $USER- Выйдите из системы и зайдите заново (или выполните
newgrp docker).
После добавления в группу обязательно перезапустите сессию! Иначе изменения не вступят в силу.
3. Проверка сокета Docker
Убедитесь, что файл сокета существует и доступен:
ls -la /var/run/docker.sock- Права должны быть:
srw-rw----и владелецroot:docker. - Если файла нет, перезапустите Docker:
sudo systemctl restart docker.
Решение для Windows и macOS
В случае с Docker Desktop:
- Убедитесь, что Docker Desktop запущен (иконка в трее/панели меню).
- Перезапустите Docker Desktop через меню (Quit Docker Desktop → запустите снова).
- Проверьте настройки виртуализации (Hyper-V, WSL2 для Windows; HyperKit для macOS).
- Попробуйте сбросить настройки: Settings → Reset → Reset to factory defaults.
Продвинутая диагностика
Если базовые методы не помогли:
- Проверьте логи демона:
sudo journalctl -u docker.service(Linux) или через Docker Desktop GUI. - Убедитесь, что нет конфликта портов (демон использует 2375/2376).
- Попробуйте запустить демон вручную с отладкой:
sudo dockerd --debug(осторожно, много вывода!). - Проверьте свободное место на диске — демон может не запускаться при нехватке места.
FAQ — Частые вопросы
Почему демон Docker останавливается после перезагрузки?
Скорее всего, служба не добавлена в автозагрузку. Выполните: sudo systemctl enable docker (Linux). В Docker Desktop проверьте настройку \"Start Docker Desktop when you log in\".
Можно ли работать без демона Docker?
Нет, демон обязателен. Но есть альтернативы, например Podman, который может работать в rootless-режиме без постоянного демона.
Ошибка возникает только у одного пользователя. Что делать?
Проверьте членство в группе docker (groups $USER) и права на сокет. Возможно, нужно пересоздать сессию пользователя.
Как полностью переустановить Docker?
1. Удалите пакеты: sudo apt remove docker docker-engine docker.io (для Ubuntu).
2. Удалите конфигурации: sudo rm -rf /var/lib/docker.
3. Установите заново по официальной инструкции.
В чем разница между Docker Daemon и Docker CLI?
CLI (docker) — это интерфейс командной строки, который отправляет запросы демону. Демон — серверная часть, которая эти запросы выполняет. Они могут быть на разных машинах (удаленный демон).