docker: Отказано в доступе при попытке подключиться к сокету демона Docker

Вопрос или проблема

На системе Ubuntu 18.04 я клонировал проект, и для его запуска нужен gradle, но при выполнении команды gradle gradle swiplRun я получаю следующую ошибку

Задача :dockerRun НЕ УСПЕШНА
docker: Отказано в доступе при попытке подключиться к сокету демона Docker по адресу unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create?name=swiprolog: dial unix /var/run/docker.sock: connect: permission denied.
Смотрите ‘docker run –help’.

Задача :dockerRunStatus НЕ УСПЕШНА
Отказано в доступе при попытке подключиться к сокету демона Docker по адресу unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/swiprolog/json: dial unix /var/run/docker.sock: connect: permission denied

НЕУДАЧА: Сборка завершилась с 2 неудачами.

Чтобы решить, я попробовал

$ sudo groupadd docker
$ sudo usermod -a -G docker myname  
"и один раз с помощью"
$ sudo gpasswd -a myname docker

так что я могу выполнять команды docker без sudo, но возникает та же ошибка
также ./gradlew --stop и выход/вход и перезагрузка тоже не сработали.

Это из-за Docker или Gradle?

У меня была та же ошибка

Отказано в доступе при попытке подключиться к сокету демона Docker по адресу unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1”: dial unix /var/run/docker.sock: connect: permission denied

при выполнении docker ps

Что помогло:

sudo gpasswd -a $USER docker
newgrp docker

Смотрите Stack Overflow Docker-compose up: Ошибка при получении версии API сервера: (‘Connection aborted.’, ConnectionRefusedError(61, ‘Connection refused’))

Другой способ:

sudo usermod -aG docker $USER
sg docker -c "bash" 

Это делает то же самое, что и выше, нет необходимости выполнять оба этих двухлайнера.

Если вы проверили все эти команды один раз, и все равно получаете ошибку, вы знаете, что это не проблема Docker, а проблема Gradle. Это означает, что Gradle не получает необходимые sudo права в какой-то момент. Это может произойти из-за локальной и не системной установки python в контейнере, просто чтобы привести один пример.

Ответ или решение

Ошибка "Got permission denied while trying to connect to the Docker daemon socket" (Получено отказ в доступе при попытке подключения к сокету демона Docker) является одной из наиболее распространенных проблем, с которой могут столкнуться пользователи Docker на различных операционных системах, включая Ubuntu 18.04. В данной статье мы подробно рассмотрим причины данной ошибки и возможные способы её решения.

Причины возникновения ошибки

Ошибка связана с отсутствием у пользователя прав доступа для взаимодействия с сокетом Docker, расположенным по адресу /var/run/docker.sock. Этот сокет управляет запросами к Docker daemon и требует определенных привилегий для его использования.

1. Права пользователя

По умолчанию доступ к docker.sock имеют только пользователи, принадлежащие к группе docker. Если ваш пользователь не входит в эту группу, то при попытке выполнить команду Docker будет возникать ошибка доступа.

2. Неактивный демон Docker

Если демон Docker не запущен или работает некорректно, это также может вызвать подобные проблемы. В таком случае соединение с сокетом невозможно, что приведет к аналогичной ошибке.

Решение проблемы

Для устранения ошибки можно воспользоваться следующими методами:

1. Добавление пользователя в группу Docker

Убедитесь, что ваш пользователь добавлен в группу docker. Для этого выполните следующие команды:

sudo groupadd docker           # Создает группу docker, если она не существует
sudo usermod -aG docker $USER  # Добавляет текущего пользователя в группу docker
newgrp docker                  # Применяет изменения

После выполнения этих команд рекомендуется выйти из системы и снова войти в неё, чтобы изменения вступили в силу. Вы также можете перезагрузить компьютер.

2. Проверка статуса демона Docker

Убедитесь, что демон Docker запущен:

sudo systemctl status docker

Если демон не работает, его можно запустить командой:

sudo systemctl start docker

Дополнительные решения

Если проблема все еще сохраняется даже после выполнения вышеуказанных шагов, возможно, вам потребуется:

  1. Очистка и переустановка Docker: В некоторых случаях поврежденные компоненты Docker могут вызывать проблемы с подключением. Попробуйте удалить и затем заново установить Docker.

  2. Проверка конфигурации Gradle: Убедитесь, что Gradle правильно настроен для работы с Docker. Возможно, некоторые скрипты Gradle требуют выполнения с правами суперпользователя (sudo).

  3. Использование командной строки с правами суперпользователя: Если другие способы не помогли, временно можно запускать команды Docker с sudo:

sudo docker ps

Заключение

Ошибка доступа к Docker daemon может возникать по различным причинам, но в большинстве случаев она связана с правами пользователя. Убедившись, что ваш пользователь входит в группу docker и что демон работает корректно, вы сможете избежать данной проблемы. Если вы выполнили все предложенные шаги и ошибка не устранена, возможно, стоит обратиться за поддержкой в сообщество Docker или просмотреть документацию для более глубокого анализа.

Оцените материал
Добавить комментарий

Капча загружается...