Как я могу использовать докер без sudo?
На страницах документации Docker все примеры команд отображаются без sudo
, например:
docker ps
В Ubuntu двоичный файл называется docker.io
. Он также не работает без sudo:
sudo docker.io ps
Как настроить Docker, чтобы мне не нужно было префикс каждой команды Docker с помощью sudo?
3 ответа
руководство для докеров это сказать об этом:
Предоставление доступа без полномочий root
Демон docker всегда работает как пользователь root, а с версии Docker 0.5.2 демон docker привязывается к сокету Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, и поэтому по умолчанию вы можете получить к нему доступ с помощью sudo.
Начиная с версии 0.5.3, если вы (или ваш установщик Docker) создаете группу Unix, называемую докере, и добавьте к ней пользователей, тогда демон docker сделает право собственности на сокет Unix на чтение /запись группой докеров начинается демон. Демон-докер должен всегда запускаться как пользователь root, но если вы запустите клиент докеров в качестве пользователя в группе докеров, вам не нужно добавлять sudo ко всем клиентским командам. Начиная с версии 0.9.0 вы можете указать, что группа, отличная от докера, должна иметь сокет Unix с опцией -G.
Предупреждение. Группа докеров (или группа, заданная с помощью -G) эквивалентна корневой системе; см. Подробные сведения об атаке демона докеров и этот блогпост на Почему мы не позволяем пользователям, не являющимся root, запускать Docker в CentOS, Fedora или RHEL (спасибо michael-n).
Важно прочитать: шаги после установки для Linux ( он также ссылается на Подробные сведения об атаке демона докеров ).
Управление Docker как пользователем без полномочий
Демон docker привязывается к сокету Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, а другие пользователи могут обращаться к нему только с помощью sudo. Демон docker всегда работает как пользователь root.
Если вы не хотите использовать sudo при использовании команды docker, создайте группу Unix под названием docker и добавьте к ней пользователей. Когда демон docker запускается, он делает доступ к сокету Unix для чтения /записи группой докеров.
-
Добавьте группу докеров, если она еще не существует:
sudo groupadd docker
-
Добавьте подключенного пользователя «$ USER» в группу докеров. Измените имя пользователя в соответствии с вашим предпочтительным пользователем, если вы не хотите использовать своего текущего пользователя:
sudo gpasswd -a $USER docker
-
Либо выполните
newgrp docker
, либо войдите в систему, чтобы активировать изменения в группах. -
Вы можете использовать
docker run hello-world
, чтобы проверить, можно ли запустить докер без sudo.
Чтобы выполнить команду docker без sudo
, вам нужно добавить своего пользователя (кто имеет права root) в группу докеров. Для этого выполните следующую команду:
sudo usermod -aG docker $USER
Теперь выйдите из системы, затем войдите в систему снова. Это решение хорошо объяснено здесь с надлежащим процессом установки.
Механизм, по которому добавление пользователя в группу docker
предоставляет разрешение на запуск докера, - это получить доступ к сокету докера в /var/run/docker.sock
, Если файловая система, содержащая /var/run
, была смонтирована с включенными ACL, это также может быть достигнуто с помощью списков ACL.
sudo setfacl -m user:username:rw /var/run/docker.sock
Я только включаю это для полноты.
В общем, я рекомендую избегать списков ACL, когда доступна хорошая альтернатива на основе групп. Лучше, если привилегии в системе можно понять, если посмотреть только на членство в группах. Необходимость сканирования файловой системы для записей ACL для понимания системных привилегий является дополнительной нагрузкой для проверок безопасности.