2016-12-12 8 views
9

Jaka jest różnica między docker run parametrach:Różnica między Döcker run --user i --group dodaj parametrów

-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. 

i

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

?

Odpowiedz

7

docker run --user=demo_user <image_name> <command> biegnie pojemnik z danego polecenia jako demo_user enter image description here

docker run --user=demo_user:group1 <image_name> <command> biegnie pojemnik z danego polecenia jako demo_user której podstawowym grupa jest ustawiona na grupa1 enter image description here

docker run --user=demo_user:group1 --group-add group2 <image_name> <command> biegnie pojemnik z danego polecenia jako demo_user której podstawowym grupa jest ustawiona na grupa1 i grupa2 jak drugorzędowej grupy użytkownika enter image description here

Uwaga: Użytkownicy i grupy używanego do nich opcje MUSZĄ zostać stworzone na obrazie, do którego tworzymy kontener. Jeśli opcja --group-add jest określona bez --user, a obraz NIE zawiera żadnego zadeklarowanego użytkownika (użytkownik powinien zostać utworzony, ale nie został zadeklarowany za pomocą instrukcji USER w pliku Dockerfile, z którego obraz został utworzony), modyfikacje grupy występują w kontenerze użytkownika root użytkownika w kontenerze .

Jeśli wybrano opcję --group-add bez --user, a zdjęcie ma zadeklarowane przez użytkownika (poprzez instrukcję USER w pliku Docker, z którego obraz został utworzony), modyfikacje grupy stają się zadeklarowanym użytkownikiem w kontenerze.

+0

O swojej notatce, czy jesteś pewien, że modyfikacje zostaną zastosowane do użytkownika 'root'. Czy nie powinny one zostać zastosowane do deklarowanego użytkownika obrazu (np. Do użytkownika, z którym jesteś połączony, jeśli nie podajesz flagi '-u')? –

+0

@AlexandreFILLATRE. Tak, grupa jest dodawana jako grupa dodatkowa do użytkownika 'root', jeśli' -user' NIE jest zapewnione ORAZ na obrazie nie ma zadeklarowanego użytkownika (użytkownik powinien zostać utworzony, ale nie został zadeklarowany za pomocą instrukcji USER w pliku Dockerfile). Odpowiednio zaktualizowałem wpis. – Yuva

+0

@AlexandreFILLATRE, Dzięki za wskazanie. – Yuva

4

Podczas tworzenia obrazu Docker można również tworzyć użytkowników i grupy wewnątrz niego. Te opcje umożliwiają połączenie jako określony użytkownik (-u) i z dodatkowymi grupami (--group-add).

Innymi słowy, po uruchomieniu procesu w kontenerze Docker robisz to jako dostarczony użytkownik i jego grupy (zdefiniowane w systemie). Można poinformować system, że bieżący użytkownik ma grupy dodatkowe za pomocą flagi --group-add, dla całego cyklu życia procesu.

sprawdzeniu dokumentacji tutaj: 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