Docker: Cannot connect to the Docker daemon — добавление в группу docker
Симптомы ошибки доступа к Docker
При выполнении любой команды Docker (docker ps, docker run) от обычного пользователя терминал возвращает ошибку:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
# или
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock Решение проблемы в 2 шага
Шаг 1. Проверяем, запущен ли сам демон Docker
Убедитесь, что служба Docker работает в системе:
sudo systemctl status dockerЕсли служба остановлена, запустите ее и добавьте в автозагрузку:
sudo systemctl enable --now dockerШаг 2. Добавляем пользователя в группу docker (запуск без sudo)
По умолчанию сокет /var/run/docker.sock принадлежит пользователю root и группе docker. Чтобы запускать контейнеры без приставки sudo, добавьте вашу учетную запись в эту группу:
- Создайте группу docker (если она еще не создана):
sudo groupadd docker - Добавьте вашего текущего пользователя (
$USER) в группу docker:sudo usermod -aG docker $USER - Активируйте изменения группы в текущей сессии:
(Либо просто перезайдите на сервер по SSH заново).newgrp docker - Проверьте работу Docker без прав суперпользователя:
docker run hello-world
Совет: Если ошибка сохраняется, проверьте права на сам сокет-файл: sudo chmod 666 /var/run/docker.sock.
Частые вопросы (FAQ)
Безопасно ли добавлять пользователя в группу docker?
Группа docker предоставляет права, эквивалентные пользователю root. Добавляйте в эту группу только тех пользователей, которым вы доверяете полное администрирование сервера.
Почему после команды usermod -aG docker ошибка не исчезла?
Linux обновляет список групп пользователя только при новой авторизации. Вам необходимо закрыть терминал SSH (exit) и войти на сервер заново, либо выполнить команду newgrp docker.
Как проверить, в каких группах состоит мой пользователь прямо сейчас?
Выполните команду: groups или id.
Что делать, если демон Docker падает при старте?
Проверьте синтаксис конфигурационного файла /etc/docker/daemon.json на наличие невалидного JSON и посмотрите детальные логи сбоя: journalctl -u docker.service -e.