#Что означает ошибка
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Команда docker — это только клиент. Все действия выполняет фоновая служба — демон Docker (dockerd), с которым клиент общается через сокет /var/run/docker.sock или по сети. Ошибка означает, что связь не установилась. Обратите внимание на формулировку: фраза «Is the docker daemon running?» говорит о недоступном демоне, а «permission denied» — о том, что демон есть, но у вас нет права им пользоваться.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Служба Docker не запущенаПосле установки или перезагрузки демон не стартовал либо упал из-за ошибки конфигурации. | systemctl status docker показывает inactive или failed. | Проверить status и journal, при необходимости запустить вручную, не включать автозапуск без решения. |
Нет прав на сокет DockerСокет принадлежит root и группе docker, а ваш пользователь в эту группу не входит. | В сообщении есть permission denied while trying to connect to the Docker daemon socket; с sudo docker ps всё работает. | Проверить sudo docker info и права; группа docker даёт полномочия root, не добавлять автоматически. |
| Не запущен Docker Desktop (Windows и macOS)Демон на этих системах работает внутри Docker Desktop; если приложение закрыто или ещё стартует, клиент не к чему подключаться. | В трее нет значка Docker или он показывает запуск; в WSL ошибка появляется при выключенной интеграции. | Запустите Docker Desktop, дождитесь состояния «Running», включите интеграцию с нужным дистрибутивом WSL. |
Клиент смотрит на неверный адресПеременная DOCKER_HOST или выбранный контекст указывают на другой сервер или несуществующий сокет. | echo $DOCKER_HOST не пуст; docker context ls показывает активным не тот контекст. | Проверить docker context ls, DOCKER_HOST и целевой endpoint прежде переключения. |
| Rootless-режим или нестандартный сокетDocker установлен без прав root и слушает сокет в каталоге пользователя. | Файла /var/run/docker.sock нет, но служба работает под вашим пользователем. | Укажите правильный сокет через DOCKER_HOST согласно документации rootless-режима. |
#Пошаговая диагностика
- Уточните систему и точное сообщениеОткройте терминал, в котором запустили
docker, сохраните всю строку ошибки. «Cannot connect» обычно означает недоступный сокет или удалённый сервер; «permission denied» — отдельную проблему доступа. Проверьтеdocker context ls— звёздочка показывает активный контекст. Если используете удалённый сервер или Docker Desktop, действия для локального Linux-демона не подходят. - Linux: проверьте состояние службы без изменения настроекНа обычном Linux с Docker Engine выполните
sudo systemctl status docker --no-pagerиdocker info. Состояниеactive (running)означает, что служба запущена; если клиент не подключается, проверьте контекст и права. Если службаinactive, администратор может выполнитьsudo systemctl start docker, затемdocker info. Запуск службы способен автоматически возобновить контейнеры с заданной политикой перезапуска — оцените это на рабочем сервере.enableдля автозапуска не нужен для разовой диагностики. - Windows или macOS: проверьте Docker DesktopНайдите Docker Desktop через Пуск (Windows) или «Программы» (macOS), запустите его и дождитесь состояния запущенного движка. После этого в терминале выполните
docker info. В Windows при запуске из WSL откройте Docker Desktop → Settings → Resources → WSL Integration и включите интеграцию только для нужного дистрибутива; опция может отличаться в зависимости от режима Desktop. Если Desktop пишет о проблеме виртуализации, решайте её отдельно — Linux-команды systemctl здесь бесполезны. - Проверьте выбранный контекст и переменные окруженияВ терминале выполните
docker context lsиdocker context show. В Linux/macOS проверьтеprintenv DOCKER_HOST; в PowerShell —$env:DOCKER_HOST. Если значение задано вашей рабочей средой или указывает на удалённый узел, не сбрасывайте его вслепую. Для локального движка переключитесь на известный корректный контекст сdocker context use ИМЯ, подставив имя из списка, и повторитеdocker info. - Linux: различайте отсутствие доступа и отсутствие демонаЕсли ошибка содержит
permission denied, аsudo docker infoработает, у пользователя нет доступа к сокету. На личном компьютере можно пользоватьсяsudo docker ...после понимания последствий. Добавление в группуdockerдаёт полномочия уровня root и допустимо только по решению администратора; это не безопасное исправление по умолчанию. Не делайтеchmod 666 /var/run/docker.sockи не открывайте Docker API в сеть. - Если служба не запускается, прочитайте журналLinux: выполните
sudo journalctl -u docker -n 80 --no-pagerиsudo systemctl status docker --no-pager. Увидели ошибку JSON? Если существует/etc/docker/daemon.json, проверьте его черезsudo python3 -m json.tool /etc/docker/daemon.json(не меняет файл). При ошибке заполнения диска выполнитеdf -h; не удаляйте вручную/var/lib/docker, так можно уничтожить образы и тома. - Повторите безопасную проверкуВыполните
docker infoиdocker psв том терминале, где ранее возникала ошибка. Успех — видны сведения о сервере и список контейнеров, даже если он пуст. При повторе проблемы сообщите администратору ОС, активный контекст, точную строку ошибки и статус службы; не передавайте секретные параметры удалённого контекста.
#Шаг 2. Запуск службы
sudo systemctl status docker --no-pagersudo systemctl start docker#Шаг 3. Права на сокет
docker infosudo docker info#Шаг 4. Адрес и контекст
printenv DOCKER_HOSTdocker context lsdocker context show#Шаг 5. Журнал службы
error, failed, а также упоминания daemon.json.sudo journalctl -u docker -n 50 --no-pager#Как проверить результат
docker infoпоказывает секцию Server без ошибки подключения.docker psвыводит список контейнеров (он может быть пуст).- Автоматический запуск службы при старте ОС настраивается отдельно и не нужен для первичной диагностики.
#Если не помогло
Проверьте, нет ли в /etc/docker/daemon.json синтаксических ошибок (служба не стартует с некорректным JSON), хватает ли места на диске и не занят ли сокет другим процессом. На Windows убедитесь, что включены виртуализация в BIOS и компонент WSL 2; при проблемах с Docker Desktop помогает перезапуск приложения и wsl --shutdown с последующим запуском.