web-dev-qa-db-fra.com

Docker: les autres utilisateurs exécutent leurs conteneurs comme mon utilisateur par défaut

J'ai installé Docker CE à partir du référentiel officiel d'apt. Pour accorder aux utilisateurs réguliers l'accès à Docker, j'ai créé un groupe docker et ajouté chaque utilisateur à ce groupe. Cependant, chaque fois qu'un utilisateur exécute quelque chose dans un conteneur (docker run -d ...), les processus sont exécutés sous mon UID et les fichiers qu'ils créent appartiennent à moi, par exemple. myuser:myuser au lieu de anotheruser:anotheruser. Lorsque les utilisateurs spécifient explicitement leurs UID (docker run -d --user $UID ...), les processus sont correctement enregistrés avec leurs UID, mais les sorties appartiennent à anotheruser:root. Cette spécification de groupe (_ root) me trouble un peu. Que dois-je faire pour:

  1. Faire en sorte que les autres utilisateurs exécutent des dockers sous leurs UID uniquement;
  2. Créez leur registre de sortie sous la forme anotheruser:anotheruser ou anotheruser:docker.
2
Eli Korvigo

Les conteneurs Docker sont gérés par le démon docker, qui s'exécute en tant que root. Par défaut, le démon docker exécute des conteneurs en tant que root. En utilisant docker run --user={uid}:{gid}, il peut être demandé au démon d’exécuter le conteneur en tant qu’utilisateur spécifique et groupe effectif.

L'ajout d'utilisateurs du système au groupe docker leur donne le privilège d'interagir avec le démon docker. Cela inclut le démarrage des conteneurs en tant que racine. Par conséquent, tout utilisateur ajouté au groupe docker doit être approuvé.

Notez que les utilisateurs du groupe docker peuvent monter le / de l'hôte à l'intérieur du conteneur et avoir ainsi un accès racine à l'ensemble du système de fichiers de l'hôte. D'où l'exigence de confiance.

En bref, la réponse à "Comment obliger les utilisateurs à toujours exécuter les conteneurs Docker sous leur propre ID utilisateur" est: en leur demandant de le faire. Dites-leur de toujours invoquer docker run en tant que:

docker run --user=$(id -u):$(id -g) ...

Inclure uid et gid résout votre deuxième question. Remarque: l'utilisateur peut également être spécifié dans le fichier DockerFile définissant l'image, mais il nomme ensuite un ID utilisateur défini dans le conteneur.

2
zwets

Docker fonctionne en tant que système, pas sur un utilisateur spécifique. Cela signifie que tout docker run sera exécuté en tant que root avec le service Docker.

Si vous voyez votre ID dans un menu fixe, c'est probablement parce que vous avez l'ID 1000 qui est le premier ID utilisateur. De nombreux Docker exécutent leur propre service avec un compte spécifique. Ce compte peut généralement utiliser le même identifiant.

3
ob2