Как я могу использовать докер без sudo?

562

На страницах документации Docker все примерные команды отображаются без sudo , как и этот:

docker ps

В Ubuntu двоичный файл называется docker.io . Он также не работает без sudo:

sudo docker.io ps

Как настроить Docker, чтобы мне не нужно было префикс каждой команды Docker с помощью sudo?

    
задан Flimm 06.06.2014 в 10:17
источник

3 ответа

835

В руководстве докеров) есть об этом :

  

Предоставление доступа без полномочий 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) эквивалентна корневой системе; см. Подробные сведения об атаке демона докеров и этот блогпост на Почему мы не 't позволить пользователям без полномочий root запускать Docker в CentOS, Fedora или RHEL (спасибо michael-n).

Важно прочитать: шаги после установки для Linux (он также ссылается на < a href="https://docs.docker.com/engine/security/security/#/docker-daemon-attack-surface"> Сведения о поверхности атаки Docker Daemon ).

  

Управление 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.

ответ дан Rinzwind 06.06.2014 в 10:24
источник
133

Чтобы выполнить команду docker без sudo , вам нужно добавить своего пользователя (кто имеет привилегии root) в группу докеров. Для этого выполните следующую команду:

 sudo usermod -aG docker $USER

Теперь выйдите из системы, затем войдите в систему снова. Это решение хорошо объяснено здесь с надлежащим процессом установки.     

ответ дан Rohini Choudhary 27.02.2016 в 20:57
10

Механизм, по которому добавление пользователя в группу docker предоставляет разрешение на запуск докера, - это получить доступ к сокету докера в /var/run/docker.sock . Если файловая система, содержащая /var/run , смонтирована с включенными ACL, это также может быть достигнуто с помощью списков ACL.

sudo setfacl -m user:username:rw /var/run/docker.sock

Я только включаю это для полноты.

В общем, я рекомендую избегать списков ACL, когда доступна хорошая альтернатива на основе групп. Лучше, если привилегии в системе можно понять, если посмотреть только на членство в группах. Необходимость сканирования файловой системы для записей ACL для понимания системных привилегий является дополнительной нагрузкой для проверок безопасности.

    
ответ дан Christian Hujer 01.12.2017 в 17:08