Не удается выполнять команды docker без sudo.

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

Я использую Docker на Linux Mint 20 (на основе ubuntu 20.04). Я установил Docker через приложение менеджера программного обеспечения.

Я пытаюсь запускать команды Docker без использования sudo, но они все равно не работают. Docker установлен. Когда я запускаю просто команду docker, она выдает ожидаемый вывод.

Обратите внимание на следующий вывод терминала. Я добавил своего текущего пользователя в группу ‘docker’, однако проблемы с разрешениями все еще сохраняются.

myUser@myUser-devDesktop:~$ sudo usermod -a -G docker ${USER}
[sudo] пароль для myUser:           
myUser@myUser-devDesktop:~$ grep 'docker' /etc/group
docker:x:137:myUser
myUser@myUser-devDesktop:~$ docker images ls
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.40/images/json?filters=%7B%22reference%22%3A%7B%22ls%22%3Atrue%7D%7D: dial unix /var/run/docker.sock: connect: permission denied
myUser@myUser-devDesktop:~$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
myUser@myUser-devDesktop:~$ 

Добавление себя в группу с помощью adduser или usermod неэффективно, пока вы не выполните соответствующий вызов PAM, поскольку PAM обычно отвечает за установку идентификаторов пользователя и группы для вашего процесса. В данный момент вы сообщили файловым конфигурациям системы, что при входе в систему вам должно быть предоставлено членство в группе docker, но это не влияет на вашу текущую сессию.

Вы можете либо выйти из системы и снова войти в нее, что приведет к тому, что в вашей новой сессии будет правильная группа, либо запустить su - myUser, чтобы создать новую оболочку с новыми привилегиями.

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

Вопрос, поставленный автором, заключается в следующем: "Почему я не могу выполнять команды Docker без использования sudo, даже после добавления себя в группу docker?" Давайте рассмотрим эту проблему детально и предложим решение на основе теории, примеров и практической реализации.

Теория

В системе Linux доступ к устройствам и файлам зачастую управляется через права доступа и группы. Docker требует права доступа к Unix-сокету /var/run/docker.sock, чтобы управлять своими функциями, такими как создание контейнеров (docker run) или список образов (docker images). По умолчанию, доступ к этому сокету ограничен для безопасности, и только пользователи группы docker могут выполнять команды без sudo.

Когда вы добавляете пользователя в группу docker с помощью команды usermod -aG docker ${USER}, это изменение не применяется мгновенно для текущей сессии. Изменение групповых привилегий срабатывает, когда пользователь начинает новую сессию, например, через повторный вход в систему.

Пример

Сценарий:

  1. Вы устанавливаете Docker через центр приложений в Linux Mint 20.
  2. Выполняете команду sudo usermod -aG docker ${USER}, чтобы добавить себя в группу docker.
  3. Проверяете список групп и видите, что ваша учетная запись правильно добавлена в группу docker.
  4. Тем не менее, команды docker images и docker run все еще требуют sudo.

Почему это происходит?

  • Ваш текущий сеанс не видит изменений, внесенных в группу. Поэтому вы получаете ошибку: «Got permission denied while trying to connect to the Docker daemon socket».

Применение

Шаги для решения проблемы:

  1. Перезагрузка сессии: Самый простой способ применить изменения – это выйти из системы и войти снова. Это создаст новую пользовательскую сессию, в которой ваша группа docker будет активной.

  2. Запуск новой оболочки: Если не хотите завершать сессию полностью, исполните команду su - myUser (где myUser – это ваше имя пользователя). Данная команда создаст новую оболочку от имени вашего пользователя, которая учтет изменения групповой принадлежности.

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

Дополнительные шаги:

  • Проверка конфигурации группы: Убедитесь, что вы действительно находите свое имя в группе docker с помощью команды grep 'docker' /etc/group.
  • Перезапуск системы (опционально): Иногда системы ведут себя непредсказуемо, и перезапуск может помочь обновить системные конфигурации.

Заключение

Решив проблему доступа к Docker без sudo через грамотное управление сессиями и системными группами, вы упростите себе работу с Docker. Всегда помните о безопасности и предоставляйте права доступа вдумчиво, чтобы избежать возможности компрометации системы. Docker – мощный инструмент, и правильное управление доступом к нему является ключевым аспектом его безопасного использования в среде Linux.

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

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