Docker Linux

Docker: нет прав на docker.sock при запуске без sudo

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Сокет Docker принадлежит группе docker. Добавьте пользователя в эту группу (sudo usermod -aG docker $USER), перезайдите в систему и проверьте docker ps. Помните: доступ к Docker равносилен правам root на хосте.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Если не помогло
  5. Почему так устроено
  6. Если после добавления в группу не помогло

#Что означает ошибка

Сообщение
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
По-русскиПользователь не может обратиться к демону Docker.

Ошибка «permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock» означает, что демон Docker работает, но у вашего пользователя нет доступа к сокету. Сокет принадлежит root и группе docker.

Не запускайте каждую команду через sudo и не открывайте сокету права 777: добавьте пользователя в группу docker — это штатный и безопасный способ.

Демон Docker работает от root. Обращаться к нему могут только root и члены группы docker.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Пользователь не в группе dockerНет членства.groups не содержит docker.Добавьте пользователя.
Группа не примененаСессия старая.Добавили в группу, но не перезаходили.Выйдите и войдите, либо newgrp docker.
Демон не запущенСлужба остановлена.Ошибка о недоступности демона.sudo systemctl start docker.
Неверные права сокетаИзменены права.ls -l /var/run/docker.sock показывает другого владельца.Верните владельца root:docker.

#Пошаговое решение

  1. Добавьте пользователя в группуСообщение permission denied while trying to connect to the Docker daemon socket означает, что текущий пользователь не может обращаться к демону Docker. На Linux откройте терминал и сначала выполните id -nG, ls -l /var/run/docker.sock и docker context ls. Важное предупреждение: членство в группе docker фактически предоставляет возможность получить права администратора хоста; на общем сервере нельзя добавлять туда всех пользователей ради удобства. Предпочтите доступ через штатное управление, rootless Docker или согласованный sudo.
  2. Обновите сеансТолько если вы администратор личного/доверенного сервера и согласны выдать пользователю фактически привилегированный доступ, используйте sudo usermod -aG docker имя_пользователя, заменив имя настоящей учётной записью (id -un). Параметр -aG добавляет группу, не стирая другие. Если группа docker отсутствует или используется rootless Docker, выясните модель установки; команда может быть неприменима.
  3. Проверьте группыПосле разрешённого изменения групп полностью завершите SSH/терминальную сессию и войдите заново: новые групповые права должны попасть в процесс оболочки. Для проверки в отдельном терминале можно выполнить id -nG. newgrp docker меняет группу текущей оболочки, но это лишь временный способ и не заменяет проверку политики доступа. На рабочем сервере лучше открыть новый сеанс, чем выполнять команды в неопределённом старом окружении.
  4. Проверьте сокетВыполните ls -l /var/run/docker.sock и проверьте владельца/группу, часто root docker, а также права. Если сокет принадлежит другому пользователю из-за rootless Docker, используйте соответствующий docker context и переменную DOCKER_HOST, а не правьте права системного сокета. Никогда не выполняйте chmod 666 /var/run/docker.sock и не делайте доступ открытым для всех.
  5. Проверьте работуПосле получения согласованного доступа выполните docker info или безопасную команду docker ps и проверьте, что вывод получен без permission denied. Запуск hello-world дополнительно скачивает образ из сети, поэтому не обязателен. Если доступ по-прежнему запрещён, уточните, какой пользователь запустил Docker, работает ли демон (systemctl status docker) и не выбран ли другой контекст Docker.
  6. Дополнительная команда по теме
    Linux · Терминал (Bash)КомандаНужен sudo
    Добавление в группу docker только после явного решения администратора: членство даёт привилегии уровня root
    # ДИАГНОСТИКА; НЕ добавляйте пользователя в docker без оценки риска
    id -un
    id -nG
    ls -l /var/run/docker.sock
    docker context ls

#Если не помогло

Не делайте chmod 666 /var/run/docker.sock: это открывает управление хостом любому пользователю. Для безопасности рассмотрите rootless-режим Docker.

#Почему так устроено

Docker-демон выполняется от root, а доступ к его сокету фактически даёт права администратора на хост. Поэтому в группу docker добавляют только доверенных пользователей. Для серверов с повышенными требованиями безопасности используют rootless-режим Docker.

#Если после добавления в группу не помогло

Группы применяются при входе в сеанс. Завершите сеанс или выполните newgrp docker. В SSH-подключении переподключитесь. Проверьте id — в списке групп должна быть docker. Если сокет принадлежит другому владельцу, исправьте: sudo chown root:docker /var/run/docker.sock.

Linux · Терминал (Bash)КомандаНужен sudo
Оригинальный дублирующий блок изменения прав заменён диагностикой
# Проверка после повторного входа в терминал
id -nG
docker ps

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.