, CTO tagħna, iħobb, juża b'mod attiv u jippromwovi Docker. F'artiklu ġdid, jispjega kif toħloq utenti f'Docker. Xogħol korrett magħhom, għaliex l-utenti m'għandhomx jitħallew bid-drittijiet ta 'l-għeruq u kif issolvi l-problema ta' indikaturi mhux imqabbla fid-Dockerfile.
Il-proċessi kollha fil-kontenitur se jimxu bħala l-utent għerq, sakemm ma tispeċifikax b'mod speċjali. Dan jidher konvenjenti ħafna, minħabba li dan l-utent m'għandux restrizzjonijiet. Huwa għalhekk li taħdem bħala root hija ħażina mil-lat tas-sigurtà. Jekk ħadd f'moħħu tajjeb ma jaħdem fuq il-kompjuter lokali bid-drittijiet tal-għeruq, allura ħafna jmexxu proċessi taħt l-għeruq f'kontenituri.
Dejjem hemm bugs li jippermettu li l-malware jaħrab mill-kontenitur u jidħol fuq il-kompjuter ospitanti. Jekk nassumu l-agħar, irridu niżguraw li l-proċessi ġewwa l-kontenitur jitmexxew minn utent li m'għandux drittijiet fuq il-magna ospitanti.
Ħolqien ta' utent
Il-ħolqien ta 'utent f'kontenitur mhuwiex differenti mill-ħolqien tiegħu fid-distribuzzjonijiet tal-Linux. Madankollu, il-kmandi jistgħu jvarjaw għal stampi bażi differenti.
Для дистрибутивов основанных на debian в Dockerfile необходимо добавить:
RUN groupadd --gid 2000 node
&& useradd --uid 2000 --gid node --shell /bin/bash --create-home nodeGħall-alpini:
RUN addgroup -g 2000 node
&& adduser -u 2000 -G node -s /bin/sh -D node
Tmexxi l-proċessi mill-utent
Biex tmexxi l-proċessi sussegwenti kollha bħala utent bl-UID 2000, mexxi:
USER 2000Biex tmexxi l-proċessi sussegwenti kollha bħala l-utent tan-node, mexxi:
USER nodeAqra iktar f ' .
Volumi tal-immuntar
Meta twaħħal volumi ġewwa kontenitur, ipprovdi lill-utent il-kapaċità li jaqra u/jew jikteb fajls. Biex tagħmel dan, l-UID (GID) tal-utent fil-kontenitur u l-utent barra l-kontenitur li għandu l-permessi xierqa biex jaċċessa l-fajl iridu jaqblu. F'dan il-każ, l-ismijiet tal-utent ma jimpurtax.
Ħafna drabi fuq kompjuter Linux, l-UID u l-GID ta 'utent huma ugwali għal 1000. Dawn l-identifikaturi huma assenjati lill-ewwel utent tal-kompjuter.
Huwa faċli li ssib l-identifikaturi tiegħek:
idInti ser tirċievi informazzjoni komprensiva dwar l-utent tiegħek.
Ibdel 2000 mill-eżempji bl-identifikatur tiegħek u kollox ikun tajjeb.
Assenja ta' UID u GID lil utent
Jekk l-utent inħoloq qabel, iżda għandek bżonn tibdel l-identifikaturi, tista 'tagħmel dan hekk:
RUN usermod -u 1000 node
&& groupmod -g 1000 node
Jekk qed tuża l-immaġni bażi alpina, għandek bżonn tinstalla l-pakkett tad-dell:
RUN apk add —no-cache shadowTgħaddi l-ID tal-utent ġewwa l-kontenitur meta tibni l-immaġni
Jekk l-ID tiegħek u l-IDs tan-nies kollha li jaħdmu fuq il-proġett jaqblu, allura speċifika din l-ID fid-Dockerfile. Madankollu, ħafna drabi l-IDs tal-utent ma jaqblux.
Kif tikseb dak li trid mhix ċara immedjatament. Għalija, din kienet l-aktar ħaġa diffiċli fil-proċess tal-ħakma ta 'Docker. Ħafna utenti docker ma jirrealizzawx li hemm stadji differenti fil-ħajja ta 'immaġni. L-ewwel, l-immaġni hija mmuntata bl-użu ta 'Dockerfile. Meta tħaddem kontenitur minn immaġni, id-Dockerfile ma jibqax jintuża.
Il-ħolqien tal-utent għandu jseħħ meta tinbena l-immaġni. L-istess japplika għad-determinazzjoni tal-utent li taħtu jiġu mnedija l-proċessi. Dan ifisser li b'xi mod irridu ngħaddu l-UID (GID) ġewwa l-kontenitur.
Id-direttivi jintużaw biex jintużaw varjabbli esterni fid-Dockerfile и . Tqabbil dettaljat tad-direttivi .
dockerfile
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node
&& groupmod -g $GID node
Tista' tgħaddi argumenti permezz ta' docker-compose bħal dan:
docker-compose
build:
context: ./src/backend
args:
UID: 1000
GID: 1000
PS Biex tikkontrolla l-intricacies kollha ta 'Docker, mhuwiex biżżejjed li taqra d-dokumentazzjoni jew l-artikoli. Trid tipprattika ħafna, trid tieħu ħsieb Docker.
Sors: www.habr.com
