Это, наверно, самый частый вопрос. Дополнительной сумятицы вносят различия между дистрибутивами. Давайте проясним раз и навсегда, в чём же тут дело.
Всё, что нужно docker — это иметь возможность общаться с docker-сервером. Это общение идёт через unix-сокет. И вот сокет-то имеет права, такие, что работать с ним может только root, или пользователь из специальной группы (в некоторых дистрибутивах сделано так).
Из вышесказанного понятно, что можно. Можно:
И ещё несколько вариантов разной степени легальности. Но главный вопрос:
И вот тут оказывается, что если вы даёте пользователю возможность запускать docker-контейнеры, то вы, фактически, выдаёте ему root-права на всю систему.
Почему?
Потому, что он может запустить контейнер (в нём он будет root)
и примонтировать (опцией -v
) часть файловой системы
внутрь конетейнера. Т.е. на этой части файловой системы
он будет root.
Поэтому вывод простой:
Причём, никакими способами.
Я бы не советовал включать обычных пользователей и в группу docker тоже. И уж тем более не советовал бы менять права на сокет или что-то подобное.