Pentru context:
docker --version
Versiunea Docker 20.10.7, versiunea 20.10.7-0ubuntu5~20.04.2
testul 1: volumul este /volumul meu
Aici este fișierul meu Docker
DIN alpin: cel mai recent
UTILIZATOR 1000:1000
VOLUME /volumul meu
și comenzile build + run:
docker build -t myimage .
docker run --rm -it imaginea mea
apoi, odata in recipient:
/ $ whoami
whoami: uid necunoscut 1000
/ $ ls -ld /myvolume/
drwxr-xr-x 2 root root 4096 8 martie 09:22 /myvolume/
/ $ atingere /myvolume/test
atingeți: /myvolume/test: Permisiune refuzată
Până acum, nu este o surpriză că utilizatorul cu UID 1000 nu poate scrie /volumul meu
.
testul 2: volumul este /tmp
Fișierul meu Docker
DIN alpin: cel mai recent
UTILIZATOR 1000:1000
VOLUME /tmp
(aceeași comenzi de build + run), iar în container:
/ $ whoami
whoami: uid necunoscut 1000
/ $ ls -ld /tmp
drwxrwxrwt 2 rădăcină rădăcină 4096 24 noiembrie 09:20 /tmp
/ $ atingeți /tmp/test
/ $ ls -l /tmp
total 0
-rw-r--r-- 1 1000 1000 0 Mar 8 09:23 test
Acum volumul s-a schimbat la /tmp
, utilizatorul cu UID 1000 poate scrie în el.
Știu /tmp
este de obicei inscriptibil în lume în GNU/Linux, dar aici, acest lucru pare „magic” (ceea ce este bine doar când Harry Potter este prin preajmă) și mă întreb dacă:
a) Îmi lipsește ceva despre modul în care funcționează Docker și volume (vă rugăm să mă consultați la documentația/tutorialele corespunzătoare)
b) este o coincidență din cauza configurării mele / lipsește ceva pentru a fi explicit și a nu mai baza pe valorile implicite
c) este o caracteristică nedocumentată care se poate modifica oricând fără notificare
d) este o caracteristică despre care nu am reușit să găsesc documentație și mă pot baza în siguranță pe faptul că atunci când un volum este atașat la /tmp
, este întotdeauna scris în lume