На страницах документации Docker все примеры команд отображаются без sudo
, как этот:
docker ps
На Ubuntu вызывается двоичный код docker.io
, Он также не работает без sudo:
sudo docker.io ps
Как настроить Docker так, чтобы мне не нужно было префикс каждой команды Docker с помощью sudo?
руководство для докеров это сказать об этом:
Предоставление доступа без полномочий 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 (спасибо майкл-н).
Важно прочитать: шаги после установки для Linux (он также ссылается на Информация о поверхности демона).
Управление Docker как пользователем без полномочий root
Демон docker привязывается к сокету Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, а другие пользователи могут обращаться к нему только с помощью sudo. Демон-докер всегда работает как пользователь root.
Если вы не хотите использовать sudo при использовании команды docker, создайте группу Unix под названием docker и добавьте к ней пользователей. Когда демон docker запускается, он становится владельцем сокета Unix, который читается / записывается группой докеров.
Добавьте группу докеров, если она еще не существует:
sudo groupadd docker
Добавьте подключенного пользователя «$ USER» в группу докеров. Измените имя пользователя в соответствии с вашим предпочтительным пользователем, если вы не хотите использовать своего текущего пользователя:
sudo gpasswd -a $USER docker
Либо сделайте newgrp docker
или выйти / войти, чтобы активировать изменения в группах.
Вы можете использовать
docker run hello-world
чтобы проверить, можно ли запустить докер без sudo.
Для запуска команды докера без 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 для понимания системных привилегий является дополнительной нагрузкой для проверок безопасности.
Предупреждение 1: У этого же root
эквивалентность как добавление username
к docker
группа. Вы все равно можете запустить контейнер таким образом, чтобы root
доступ к файловой системе хоста.
Предупреждение 2: ACL значительно сложнее для проверок безопасности, чем безопасность на основе групп. Вероятно, избегайте ACL, если это возможно, когда вы можете использовать группы вместо этого, по крайней мере, в средах, относящихся к аудиту.