Gostaríamos de usar o docker nos servidores da nossa universidade. Da leitura
https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user
Entendo que é recomendado criar um grupo Unix docker
e adicionar usuários a este grupo. No meu grupo de pesquisa compartilhamos uma máquina servidora, então naturalmente eu adicionaria várias pessoas ao docker
grupo.
Mas isso também significa que todos os membros do docker
grupo podem, entre outras coisas, iniciar e parar qualquer contêiner, mesmo que os contêineres não sejam seus? Para mim isso parece ser impraticável.
De forma mais geral, minha pergunta é:
Quais são as melhores práticas para as equipes usarem o docker em uma máquina compartilhada?
TL;DR:
docker
associação ao grupo = direitos de rootO
docker
grupoÉ verdade que é um conselho frequentemente lido para adicionar usuários que devem poder usar o docker ao
docker
grupo. No entanto, como os usuários são root dentro de contêineres e podem montar qualquer caminho no sistema usando-v
(mesmo os caminhos aos quais normalmente não têm acesso), isso está efetivamente dando a todos os usuários direitos de root.Portanto, deve ser considerado apenas uma preocupação "menor" que os usuários possam mexer nos contêineres de outros usuários. Eles podem realmente fazer qualquer coisa com o sistema se forem membros do
docker
grupo.Docker em uma máquina compartilhada
Se realmente precisar ser o Docker original, considere duas opções:
1. A solução estável: Docker na VM
O que estou fazendo o tempo todo é executar o Docker dentro de máquinas virtuais. Você adiciona uma máquina virtual por usuário à máquina compartilhada e permite que os usuários executem contêineres nessa máquina. Claro, isso só funciona se você puder tolerar a sobrecarga de recursos (e com muitos usuários dos quais apenas alguns estão logados no momento, pode ser necessário desenvolver algum esquema para iniciar e parar VMs automaticamente).
2. A solução experimental: Rootless Docker
Eu não sei o estado atual do projeto, mas há trabalho para tornar o Docker disponível sem root st um usuário pode simplesmente executar seu próprio Docker (sem precisar de associações de grupo). Consulte https://engineering.docker.com/2019/02/experimenting-with-rootless-docker/
Outra solução: alternativa ao Docker.
Caso não precise ser o Docker, mas qualquer ambiente de container, considere as alternativas. Eu li que
podman
oferece uma interface muito semelhante sem a necessidade de executá-lo como root.