Puncte:0

UTILIZATOR PROPRIETAR greșit pe folder/fișier: docker run -v :/ nu funcționează pentru utilizatorul definit în Dockerfile

drapel in
AKS

OS gazdă: Lansarea Red Hat Enterprise Linux Server 7.9 (Maipo)

OS invitat adică un container Docker care rulează: OpenSuse 15.2

Versiunea Docker (pe gazdă): Docker versiunea 19.03.5, construi 633a0ea

Pe gazdă, când clonez un depozit „utilities_scripts” am acces valid pentru utilizator (din cauza umask).

  • Cred că problema aici nu este legată de permisiune, dar DE CE UTILIZATORUL definit în fișierul Docker nu este setat ca proprietar al folderelor/fișierelor (care sunt montate) în interiorul containerului docker, atunci când emit următoarele docker run... comanda. Setarea 755/775 etc nu este o opțiune, deoarece nu pot folosi în interiorul containerului ca utilizator docker țintă și setarea 777 este o practică proastă.

NOTĂ:

  1. Când încerc aceeași imagine docker de pe o altă mașină Linux, folderul/fișierele sunt montate ca utilizator "docker_non_root_user" care este definit în Dockerfile ca USER docker_non_root_user.
  2. docker build... rulează cu succes și creează o imagine, iar containerul funcționează pe o altă mașină (când montez git clone repos în interiorul containerului folosind -v <gazdă>:<container> sintaxa opțiunii docker CLI.

Fragment de cod din Dockerfile este:

# Definiți orice referință la punctele de montare
VOLUM ["/home/docker_non_root_user/git"]

USER docker_non_root_user
WORKDIR /home/docker_non_root_user/git

Aceasta este ceea ce văd pe gazda unde am Dockerfile UTILIZATOR ... problema de proprietate:

[gigauser@jenkins-projectABC bitbucket_workspace]$ whoami
gigauser
[gigauser@jenkins-projectABC bitbucket_workspace]$ id
uid=gigauser(gigauser) gid=21520(jenkins) grupuri=21520(jenkins),3000(ectx)

[gigauser@jenkins-projectABC bitbucket_workspace]$ umask
0077
[gigauser@jenkins-projectABC bitbucket_workspace]$ ls -l
total 12
drwx------ 5 gigauser jenkins 4096 3 februarie 16:36 utilities_scripts
[gigauser@jenkins-projectABC bitbucket_workspace]$


[gigauser@jenkins-projectABC bitbucket_workspace]$ imagine sudo docker ls
Parola Active Directory:
DIMENSIUNEA ID-ului IMAGINIEI Etichetei de depozitare creată
project-im-opensuse 15.2 0c9ee31464cd acum 43 ore 2,39 GB
[gigauser@jenkins-projectABC bitbucket_workspace]$

[gigauser@jenkins-projectABC bitbucket_workspace]$
[gigauser@jenkins-projectABC bitbucket_workspace]$ sudo docker run -v $PWD/utilities_scripts:/home/docker_non_root_user/git/utilities_scripts/ -it project-im-opensuse:15.2 bash -c "whoami; id; care bash; bash - -versiune; ls -l; echo; ls -l utilities_scripts; ls -l /home/docker_non_root_user/git/utilities_scripts; id gigauser; echo"

AVERTISMENT: redirecționarea IPv4 este dezactivată. Rețeaua nu va funcționa.


docker_non_root_user
uid=1000(docker_non_root_user) gid=487(docker_non_root_user) grupuri=487(docker_non_root_user),100(utilizatori)

/bin/bash
GNU bash, versiunea 4.4.23(1) - lansare (x86_64-suse-linux-gnu)
Drepturi de autor (C) 2016 Free Software Foundation, Inc.
Licență GPLv3+: GNU GPL versiunea 3 sau ulterioară <http://gnu.org/licenses/gpl.html>

Acesta este software gratuit; sunteți liber să îl schimbați și să îl redistribuiți.
NU ESTE GARANȚIE, în măsura permisă de lege.
total 8
drwx------ 5 gigauser 21520 4096 Feb 4 00:36 utilities_scripts

ls: nu se poate deschide directorul 'utilities_scripts': Permisiune refuzată
ls: nu se poate deschide directorul „/home/docker_non_root_user/git/utilities_scripts”: Permisiune refuzată
id: 'gigauser': nu există un astfel de utilizator

[gigauser@jenkins-projectABC bitbucket_workspace]$

Când rulez aceeași comandă pe altă mașină Linux, văd montat utilitati_scripturi proprietarul folderului este docker_non_root_user.

Întrebare: DE CE Văd ID-ul de utilizator al utilizatorului gazdei (unde rulez docker run comanda) este setat în containerul docker din folder utilitati_scripturi, când nu a fost creat un astfel de ID de utilizator în Dockerfile/există în interiorul containerului? (vezi ultima linie a 2-a din rezultatul de mai sus). În prezent, primește permisiunile de proprietar și la nivel de folder ale aceluiași gazdă în interiorul containerului docker.

gigauser adică utilizatorul gazdei, nu este acolo în containerul docker, ci în fișier ls -l ieșire arată gigauser este proprietarul utilitati_scripturi folder/fișiere din container. Această problemă nu apare pe altă mașină gazdă.

chiar am verificat /etc/subuid dosar, mi se pare ok. Schimbarea valorii din interior la utilizatorul docker nu a ajutat. De asemenea, nu văd nimic legat de asta în /etc/docker/daemon.json fişier.

$ cat /etc/subuid
gigauser:165536:65536

Alergând la fel docker run ....opțiuni comanda de mai sus de la cealaltă mașină gazdă Linux, arată proprietatea folderului din containerul docker ca:

drwx------ 5 docker_non_root_user 1000 272 26 ian 21:52 utilities_scripts
Puncte:0
drapel cn

Nu sunt pe deplin sigur că vă urmăresc întrebarea, deoarece este puțin neclară pentru mine. Dar din cate pot intelege:

Ta gigauser ID-ul numeric nu este 1000, se pare că ar putea fi 21520. Funcționează pe o altă gazdă, deoarece acolo utilizatorul local probabil are ID-ul numeric 1000.

Vedeți ID-ul de utilizator al gazdei deoarece montezi folderul, nu îl copiați. Când îl montezi, acesta este partajat în container cu exact aceleași permisiuni/ID-uri ca cele setate pe gazdă - deoarece se află pe gazdă. Containerele nu sunt ca mașinile virtuale cu resurse complet separate și chiar și pe o mașină virtuală, dacă montezi ceva de genul unui director NFS, vei obține ID-uri numerice care se potrivesc sau nu cu ID-urile locale.

Folosind /etc/subuid necesită trecerea unui flag la comanda de rulare și va trebui să faceți calcule matematice pentru a calcula decalajele pentru utilizatorul dvs.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.