2016-12-12 4 views
9

Was ist der Unterschied zwischen docker run Parameter:Unterschied zwischen Docker Lauf --user und --group-Parameter hinzufügen

-u, --user="" 
     Sets the username or UID used and optionally the groupname or GID for the specified command. 

    The followings examples are all valid: 
     --user [user | user:group | uid | uid:gid | user:gid | uid:group ] 

    Without this argument the command will be run as root in the container. 

und

--group-add=[] 
     Add additional groups to run as 

?

Antwort

7

docker run --user=demo_user <image_name> <command> betreibt einen Container mit dem angegebenen Befehl als demo_user enter image description here

docker run --user=demo_user:group1 <image_name> <command> betreibt einen Container mit dem angegebenen Befehl als demo_user, deren primäre Gruppe wird auf Gruppe1 festgelegt

docker run --user=demo_user:group1 --group-add group2 <image_name> <command> läuft, einen Behälter mit dem gegebenen Befehl als demo_user primäre Gruppe, deren auf Konzern1 und group2 als Nebengruppe des Benutzers enter image description here

Hinweis: Benutzer und für diese verwendet Gruppen Optionen MÜSSEN in dem Bild erstellt werden, von dem wir einen Container erstellen. Wenn --group-add Option ohne --user angegeben ist und das Bild KEIN Benutzer deklariert wurde (Benutzer hätte erstellt werden sollen, aber nicht über USER-Anweisung in Dockerfile deklariert, aus dem das Image erstellt wurde), werden Gruppenänderungen an dem root Benutzer im Container vorgenommen .

Wenn --group-add allein Option ohne --user angegeben wird und das Bild hat den Benutzer erklärt (via USER Anweisung in Dockerfile von dem das Bild erstellt wurde), passieren Gruppe Änderungen an den angemeldeten Benutzer im Container.

+0

Über Ihre Notiz, sind Sie sicher, dass Änderungen auf den Benutzer 'root' angewendet werden. Sollten sie nicht stattdessen auf den erklärten Benutzer des Bildes angewendet werden (d. H. Auf den Benutzer, mit dem Sie verbunden sind, wenn Sie nicht das Flag "-u" angeben)? –

+0

@AlexandreFILLATRE. Ja, Gruppe wird als sekundäre Gruppe zum 'root'-Benutzer hinzugefügt, wenn '--user' NICHT angegeben ist UND das Bild keinen Benutzer deklariert hat (Benutzer hätte erstellt werden sollen, aber nicht über die USER-Anweisung in Dockerfile deklariert). Ich habe den Beitrag entsprechend aktualisiert. – Yuva

+0

@AlexandreFILLATRE, Danke für den Hinweis darauf. – Yuva

4

Wenn Sie ein Docker-Image erstellen, können Sie auch Benutzer und Gruppen darin erstellen. Mit diesen Optionen können Sie sich als bestimmter Benutzer (-u) und mit zusätzlichen Gruppen (--group-add) verbinden.

Mit anderen Worten, wenn Sie einen Prozess in einem Docker-Container ausführen, tun Sie dies als den bereitgestellten Benutzer und seine Gruppen (im System definiert). Sie können dem System mitteilen, dass der aktuelle Benutzer zusätzliche Gruppen hat, indem Sie das Flag --group-add für die Lebensdauer des Prozesses verwenden.

Schauen Sie sich die Dokumentation hier: https://docs.docker.com/engine/reference/run/#/additional-groups

$ docker run --rm --group-add audio --group-add nogroup --group-add 777 busybox id 
uid=0(root) gid=0(root) groups=10(wheel),29(audio),99(nogroup),777 
Verwandte Themen