Ошибка Docker: permission denied daemon socket — запуск без sudo
Почему возникает ошибка Permission Denied в Docker?
После чистой установки Docker на Ubuntu или Debian попытка выполнить любую стандартную команду (например, docker ps или docker run hello-world) завершается ошибкой прав доступа:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission deniedПричина ошибки:
Демон Docker (фоновая служба dockerd) взаимодействует через специальный Unix-сокет /var/run/docker.sock. По соображениям безопасности владельцем этого сокета является суперпользователь root и системная группа docker. Если ваша текущая учетная запись не состоит в этой группе, Linux блокирует доступ.
Пошаговое решение: запуск Docker без использования sudo
Шаг 1. Создаем системную группу docker
В большинстве случаев группа создается автоматически при установке, но выполните команду для проверки:
sudo groupadd docker(Если группа уже есть, система просто напишет group already exists — это нормально).
Шаг 2. Добавляем своего пользователя в группу docker
Выполните команду добавления (системная переменная
$USERавтоматически подставит ваш текущий логин):sudo usermod -aG docker $USERШаг 3. Применяем изменения групп в текущей сессии
Чтобы операционная система перечитала членство учетной записи в группах без полного перезапуска сервера, выполните:
newgrp dockerШаг 4. Проверяем работу Docker
Запустите проверочный тестовый контейнер без приставки sudo:
docker run hello-worldЕсли на экране появилось приветствие Hello from Docker! — проблема полностью устранена.
Частые вопросы (FAQ)
Безопасно ли добавлять пользователя в группу docker?
Члены группы docker фактически получают права, эквивалентные root-пользователю (так как через монтирование контейнера можно получить доступ к системным файлам хоста). Добавляйте в эту группу только тех пользователей, которым вы доверяете.
Почему после команды usermod ошибка осталась при открытии новой вкладки SSH?
Вам необходимо полностью выйти из сессии SSH командой exit и подключиться к серверу заново, чтобы обновленный токен безопасности применился.
Что делать, если сам демон Docker выключен?
Если сокет вообще отсутствует, проверьте статус службы Docker командой: sudo systemctl status docker. При необходимости запустите ее: sudo systemctl start docker.
Можно ли просто выдать права 777 на сокет docker.sock?
Категорически нет! Команда chmod 777 /var/run/docker.sock откроет дыру в безопасности для любых локальных вредоносных скриптов и сбросится при первой же перезагрузке службы.