Хотим использовать докер на серверах нашего университета. Из чтения
https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user
Я так понимаю, что рекомендуется создать группу Unix docker
и добавить пользователей в эту группу. В моей исследовательской группе мы используем одну серверную машину, поэтому, естественно, я бы добавил несколько человек в docker
группа.
Но означает ли это также, что каждый член docker
group может, помимо прочего, запускать и останавливать любой контейнер, даже если он не принадлежит ему? Мне это кажется непрактичным.
В общем, мой вопрос:
Как лучше всего использовать Docker на общей машине для команд?
TL; DR: docker
членство в группе = права root
docker
группаЭто правда, что часто читают советы по добавлению пользователей, которые должны иметь возможность использовать докер, в docker
группа. Однако, поскольку пользователи являются корневыми внутри контейнеров и могут монтировать любой путь в системе, используя -v
(даже пути, к которым они обычно не имеют доступа), это фактически дает всем пользователям права root.
Таким образом, "второстепенной" проблемой следует считать то, что пользователи могут вмешиваться в контейнеры других пользователей. Они действительно могут делать с системой все, что угодно, если они являются членами docker
группа.
Если это действительно должен быть оригинальный Docker, рассмотрите два варианта:
Я все время запускаю Docker на виртуальных машинах. Вы добавляете по одной виртуальной машине для каждого пользователя к общей машине, а затем разрешаете пользователям запускать контейнеры на этой машине. Конечно, это работает только в том случае, если вы можете терпеть накладные расходы на ресурсы (и со многими пользователями, из которых только немногие вошли в систему в данный момент, может потребоваться разработать некоторую схему для автоматического запуска и остановки виртуальных машин).
Я не знаю, в каком состоянии находится проект, но ведется работа над тем, чтобы сделать Docker доступным без root-прав. пользователь может просто запустить свой собственный Docker (без членства в группах). Видеть https://engineering.docker.com/2019/02/experimenting-with-rootless-docker/
Если это не Docker, а любая контейнерная среда, рассмотрите альтернативы. Я прочитал это podman
предлагает очень похожий интерфейс без необходимости запускать его от имени пользователя root.