#Что означает ошибка
permission denied docker.sock
Сообщение «permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock» означает, что ваша учётная запись не имеет права обращаться к сокету демона Docker. По умолчанию сокет принадлежит root и группе docker, поэтому обычный пользователь без членства в группе получает отказ.
Варианты решения зависят от политики безопасности: согласованный rootless Docker либо разрешённое добавление в группу docker. Группа docker фактически открывает привилегированный доступ к хосту.
Варианты решения зависят от политики безопасности: согласованный rootless Docker либо разрешённое добавление в группу docker. Группа docker фактически открывает привилегированный доступ к хосту.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет в группеПользователь. | Проявляется как «permission denied docker.sock» или близкий по смыслу сбой. | Добавьте. |
| СессияНе обновлена. | Проявляется как «permission denied docker.sock» или близкий по смыслу сбой. | Перелогиньтесь. |
| СокетПрава. | Проявляется как «permission denied docker.sock» или близкий по смыслу сбой. | Проверьте. |
| RootlessРежим. | Проявляется как «permission denied docker.sock» или близкий по смыслу сбой. | Настройте. |
#Пошаговое решение
- Разделите доступ к сокету и состояние службыВ терминале Linux выполните
docker version. Если клиент работает, но сервер сообщаетpermission deniedк/var/run/docker.sock, проверьтеls -l /var/run/docker.sockиid -nG. Если вместо этогоCannot connect, сначала проверьте службу Docker; добавление в группу не запускает демон. - Оцените необходимость прав администратораГруппа
dockerна обычной установке предоставляет возможности уровня root на хосте. Если это сервер организации, запросите утверждённый способ доступа (например, rootless Docker) у администратора. Не назначайте сокету режим 666 и не меняйте его владельца без понимания настроек службы. - Если доступ согласован — настройте группуНа стандартной Linux-установке администратор проверяет
getent group docker; при наличии группы выполняетsudo usermod -aG docker ИМЯ_ПОЛЬЗОВАТЕЛЯ, подставив нужный логин. Завершите текущий сеанс и войдите снова. Команда изменяет членство пользователя и не должна применяться к посторонней учётной записи. - Проверьте результатВ новом сеансе выполните
id -nG, затемdocker ps. Если список выводится безpermission denied, доступ настроен. При отказе проверьте состояние Docker и расположение сокета; не используйтеsudo chmod 666 /var/run/docker.sock.
#Как добавить пользователя
Если администратор разрешил изменение членства в группе, выполните его для конкретной учётной записи согласно шагам ниже, затем полностью переоткройте сеанс. Не создавайте группу и не меняйте сокет автоматически.
#Если не помогло
Убедитесь, что демон запущен (systemctl status docker), а права на сокет корректны: ls -l /var/run/docker.sock должен показывать группу docker. В WSL2 проверьте интеграцию Docker Desktop с вашим дистрибутивом. В контейнерах CI не добавляйте в группу чужие пользователи без необходимости.
#Безопасная альтернатива
Для серверов с повышенными требованиями используйте rootless-режим Docker или Podman, которые не требуют прав root. Не открывайте сокет Docker на все пользователи командой chmod 666: это отключает защиту целиком.
ls -l /var/run/docker.sockid -nGdocker psКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
#Как проверить результат
Выполните docker run --rm hello-world без sudo: контейнер должен запуститься и вывести приветствие. Если команда по-прежнему отказывает в доступе, вероятно, сеанс не обновил список групп: выполните выход из системы и повторный вход, а в SSH-сеансе переподключитесь. Проверить текущие группы процесса можно командой id.