☰ Оглавление

Почему docker требует root-прав

Это, наверно, самый частый вопрос. Дополнительной сумятицы вносят различия между дистрибутивами. Давайте проясним раз и навсегда, в чём же тут дело.

Какие права реально нужны docker

Всё, что нужно docker — это иметь возможность общаться с docker-сервером. Это общение идёт через unix-сокет. И вот сокет-то имеет права, такие, что работать с ним может только root, или пользователь из специальной группы (в некоторых дистрибутивах сделано так).

Можно ли запускать docker без sudo?

Из вышесказанного понятно, что можно. Можно:

И ещё несколько вариантов разной степени легальности. Но главный вопрос:

А безопасно ли давать простому пользователю доступ к запуску docker?

И вот тут оказывается, что если вы даёте пользователю возможность запускать docker-контейнеры, то вы, фактически, выдаёте ему root-права на всю систему.

Почему?

Потому, что он может запустить контейнер (в нём он будет root) и примонтировать (опцией -v) часть файловой системы внутрь конетейнера. Т.е. на этой части файловой системы он будет root.

Поэтому вывод простой:

Не позволяйте обычным пользователям запускать docker.

Причём, никакими способами.

Я бы не советовал включать обычных пользователей и в группу docker тоже. И уж тем более не советовал бы менять права на сокет или что-то подобное.