Назад | Перейти на главную страницу

Рекомендации для пользователей докеров на общей машине

Хотим использовать докер на серверах нашего университета. Из чтения

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, рассмотрите два варианта:

1. Стабильное решение: Docker в ВМ

Я все время запускаю Docker на виртуальных машинах. Вы добавляете по одной виртуальной машине для каждого пользователя к общей машине, а затем разрешаете пользователям запускать контейнеры на этой машине. Конечно, это работает только в том случае, если вы можете терпеть накладные расходы на ресурсы (и со многими пользователями, из которых только немногие вошли в систему в данный момент, может потребоваться разработать некоторую схему для автоматического запуска и остановки виртуальных машин).

2. Экспериментальное решение: Docker без рута.

Я не знаю, в каком состоянии находится проект, но ведется работа над тем, чтобы сделать Docker доступным без root-прав. пользователь может просто запустить свой собственный Docker (без членства в группах). Видеть https://engineering.docker.com/2019/02/experimenting-with-rootless-docker/

Другое решение: альтернатива Docker.

Если это не Docker, а любая контейнерная среда, рассмотрите альтернативы. Я прочитал это podman предлагает очень похожий интерфейс без необходимости запускать его от имени пользователя root.