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

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

docker ps

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

sudo docker.io ps

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

621 голос | спросил Flimm 6 J0000006Europe/Moscow 2014, 12:17:43

3 ответа


935

руководство для докеров это сказать об этом:

  

Предоставление доступа без полномочий 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.

ответил Rinzwind 6 J0000006Europe/Moscow 2014, 12:24:12
149

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

 sudo usermod -aG docker $USER

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

ответил Rohini Choudhary 27 FebruaryEurope/MoscowbSat, 27 Feb 2016 22:57:56 +0300000000pmSat, 27 Feb 2016 22:57:56 +030016 2016, 22:57:56
22

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

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

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

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

ответил Christian Hujer 1 FriEurope/Moscow2017-12-01T19:08:37+03:00Europe/Moscow12bEurope/MoscowFri, 01 Dec 2017 19:08:37 +0300 2017, 19:08:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132