На страницах документации Docker все примеры команд показаны без sudo
, например:
docker ps
В Ubuntu бинарный файл называется docker.io
. Это также не работает без sudo:
sudo docker.io ps
Как я могу настроить Docker так, чтобы мне не нужно было ставить перед каждой командой Docker префикс sudo?
apt-cache policy docker-engine
(apt url должен быть из dockerproject.org)Ответы:
Хорошая новость: новый докер (версия 19.03 (в настоящее время экспериментальный)) сможет работать без прав root, что устраняет проблемы, которые могут возникнуть при использовании пользователя root. Больше не нужно возиться с повышенными правами, root и всем, что может открыть вашу машину, когда вы этого не хотите.
Видео об этом из [DockerCon 2019] демона Hardening Docker в режиме Rootless
Начиная с докера 19.3 это устарело (и опаснее, чем нужно):
В руководстве по докеру есть что сказать об этом:
Важно прочитать: шаги после установки для Linux (он также ссылается на детали Docker Daemon Attack Surface ).
Добавьте группу докеров, если она еще не существует:
Добавьте подключенного пользователя «$ USER» в группу Docker. Измените имя пользователя, чтобы оно соответствовало вашему предпочтительному пользователю, если вы не хотите использовать своего текущего пользователя:
Либо сделайте,
newgrp docker
либо выйдите из системы, чтобы активировать изменения в группах.Вы можете использовать
чтобы проверить, можете ли вы запустить Docker без sudo.
источник
newgrp docker
не работал для меня, я должен был выйти.docker login
, вы можете обнаружить, что.docker
папка, созданная в вашей домашней папке, принадлежитroot
. Таким образом , вы столкнулись бы это предупреждение при выполнении команд Docker:WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied
. Я сделал мой профиль.docker
папки доступны без Судо так:sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker
.chgrp
не похоже , чтобы помочь , хотя, так что, вероятно , я должен рекомендовать только CHOWN шаг.Чтобы запустить команду docker без
sudo
, вам нужно добавить своего пользователя (который имеет права root) в группу docker. Для этого запустите следующую команду:Теперь выйдите из системы, затем войдите снова. Это решение хорошо объяснено здесь с помощью правильного процесса установки.
источник
Механизм, с помощью которого добавление пользователя в группу
docker
дает разрешение на запуск docker, заключается в получении доступа к сокету docker at/var/run/docker.sock
. Если файловая система, которая содержит/var/run
, была смонтирована с включенными ACL, это также может быть достигнуто через ACL.Я включил это только для полноты.
В общем, я рекомендую избегать списков ACL всякий раз, когда доступна хорошая альтернатива, основанная на группах: лучше понимать привилегии в системе, рассматривая только членство в группах. Необходимость сканировать файловую систему для записей ACL, чтобы понять системные привилегии, является дополнительным бременем для аудита безопасности.
Предупреждение 1 : Это имеет ту же
root
эквивалентность, что и добавлениеusername
вdocker
группу. Вы по-прежнему можете запускать контейнер так, чтобы он имелroot
доступ к файловой системе хоста.Предупреждение 2 : ACL значительно сложнее для аудита безопасности, чем групповая безопасность. Вероятно, избегайте списков ACL, если это возможно, когда вместо них можно использовать группы, по крайней мере, в аудиторских средах.
источник