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:
anotheruser:anotheruser
ou anotheruser:docker
.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.
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.