Se connecter à docker conteneur en tant qu'utilisateur autre que root
PAR défaut lorsque vous exécutez
docker run -it [myimage]
OU
docker attach [mycontainer]
vous connectez à la borne en tant qu'utilisateur root, mais je tiens à vous connecter en tant qu'utilisateur différent. Est-ce possible?
Oui.
et pour joindre ?
Il n'y a pas une telle option pour attacher. Vous devrez vous connecter en tant que root, puis
docker run --user user_name
et pour joindre ?
Il n'y a pas une telle option pour attacher. Vous devrez vous connecter en tant que root, puis
su user_name
OriginalL'auteur Andy59469 | 2016-03-01
Vous devez vous connecter pour publier un commentaire.
Pour
docker run
:Il suffit d'ajouter l'option
--user <user>
de changer pour un autre utilisateur lorsque vous démarrez le conteneur docker.Pour
docker attach
oudocker exec
:Depuis la commande est utilisée pour attacher/exécuter dans le processus existant, donc il utilise le courant de l'utilisateur directement.
Si vous voulez vraiment vous joindre à l'utilisateur que vous souhaitez avoir, alors
run --user <user>
ou de le mentionner dans votreDockerfile
à l'aide deUSER
OriginalL'auteur Larry Cai
Vous pouvez exécuter un shell en cours d'exécution docker conteneur à l'aide d'une commande comme:
docker exec -it --user root <container id> /bin/bash
--user
option peut être omis si les commandes doivent être exécutées en tant que root, je suppose.OriginalL'auteur Jason
Vous pouvez spécifier
USER
dans le Dockerfile. Toutes les actions suivantes seront effectuées à l'aide de ce compte. Vous pouvez spécifierUSER
une ligne avant laCMD
ouENTRYPOINT
si vous ne souhaitez utiliser que de l'utilisateur lors du lancement d'un conteneur (et non pas lors de la construction de l'image). Lorsque vous démarrez un conteneur de l'image résultante, vous pourrez joindre en tant que l'utilisateur spécifié.OriginalL'auteur kliew
La seule façon que je suis capable de le faire fonctionner est de:
docker run -it -e USER=$USER -v /etc/passwd:/etc/passwd -v `pwd`:/siem mono bash
su - magnus
J'ai donc à la fois spécifier $variable d'environnement UTILISATEUR ainsi un moment, le fichier /etc/passwd. De cette façon, je peux compiler /siem dossier et de conserver la propriété des fichiers il n'y a pas en tant que root.
OriginalL'auteur ifelsemonkey
Ma solution:
Cela permet à l'utilisateur d'exécuter des commandes arbitraires en utilisant les outils fournit par
my-docker-image
. Notez comment l'utilisateur du répertoire de travail actuel est le volume montépour
/cmd
à l'intérieur du conteneur.Je suis en utilisant ce flux de travail pour permettre à mon dev-team pour cross-compiler du code C/C++ pour la arm64 cible, dont bsp je maintiens (le
my-docker-image
contient le cross-compilateur, sysroot, faire, cmake, etc). Avec ce qu'un utilisateur peut simplement faire quelque chose comme:Où
cross_compile.sh
est le script présenté ci-dessus. Leaddgroup/useradd
machines permet à l'utilisateur de propriété de tous les fichiers/répertoires créés par la construction.Alors que cela fonctionne pour nous. Il semble sorte de hacky. Je suis ouvert à d'autres implémentations ...
OriginalL'auteur rmccabe3701
Exécuter une commande en tant que www-data de l'utilisateur:
docker exec -t --user www-data container bash -c "ls -la"
OriginalL'auteur Vasili Pascal