#Как выглядит неисправность
Ошибка «permission denied while trying to connect to the Docker daemon socket» означает, что текущий пользователь не может подключиться к демону по Unix-сокету. Добавление в группу docker равнозначно предоставлению очень широких привилегий на хосте.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| У пользователя нет доступа к сокетуdocker info сообщает permission denied | ls -l /var/run/docker.sock показывает владельца/группу | Согласовать способ запуска Docker с администратором |
| Демон Docker не работаетСокет отсутствует или соединение не устанавливается | systemctl status docker показывает inactive/failed | Проверить службу, но не менять права вслепую |
#Пошаговое устранение
- 1. Проверьте точный текст сбояВ терминале Linux-хоста выполните docker info. Если ошибка сообщает connect permission denied — исследуйте доступ к сокету; если Cannot connect to the Docker daemon — возможна остановка службы. В Docker Desktop на Windows/macOS путь и способ доступа могут отличаться.Linux · Терминал (Bash)КомандаЧитает состояние Docker; доступ может быть запрещён.
docker info
- 2. Уточните пользователя и сокетВ Linux выполните id и ls -l /var/run/docker.sock. Сравните группы пользователя с группой сокета; не меняйте режим доступа. Если сокета нет, переходите к проверке демона.
- Только чтение пользователя и прав; LinuxLinux · Терминал (Bash)КомандаТолько чтение пользователя и прав; Linux.
idls -l /var/run/docker.sock
- 3. Проверьте, не выбран ли чужой контекстВыполните docker context ls и docker context show. Активный контекст может указывать на удалённый сервер или rootless-демон с другим сокетом. Если контекст неверный, выберите правильный по правилам организации; не меняйте глобальные права ради ошибочного endpoint.Linux · Терминал (Bash)КомандаТолько чтение конфигурации клиентов Docker.
docker context lsdocker context show
- 4. При наличии полномочий проверьте службуВ Linux с systemd запросите systemctl status docker без sudo. Если служба inactive, сообщите администратору и приложите безопасные строки журнала. Не включайте автозапуск и не перезапускайте общий Docker без окна обслуживания.Linux · Терминал (Bash)КомандаДиагностика состояния службы; администратор не требуется для статуса на типичных системах.
systemctl status docker --no-pager
- 5. Выберите контролируемый способ доступаНа личной тестовой машине администратор может разрешить rootless Docker или предоставить ограниченный доступ через настроенный сервис; добавление в группу docker — решение безопасности, а не простое исправление прав. Если требуются sudo docker, это должно быть санкционировано политикой.
- 6. Проверьте чтение списка контейнеровПосле исправления доступа в новой сессии выполните docker ps. Если запрос успешен и показывает список либо пустую таблицу — соединение установлено. Если ошибка изменилась на connection refused, вернитесь к проверке контекста и демона.Linux · Терминал (Bash)КомандаЧитает список; не запускает контейнеры.
docker ps
#Как проверить результат
Успех: docker ps работает в согласованной модели прав, а Unix-сокет не сделан общедоступным.
#Если проблема осталась
Не повторяйте опасные действия на рабочем окружении. Сравните первоначальный симптом с новым состоянием, сохраните обезличенные сообщения и версии компонентов, проверьте резервную копию; перед изменением общей истории Git или данных/сети Docker обратитесь к ответственному администратору проекта.