Erabiltzailea Docker-en

Andrei Kopylov, gure CTO, Docker maite, aktiboki erabiltzen eta sustatzen du. Artikulu berri batean, Docker-en erabiltzaileak nola sortu azaltzen du. Lan zuzena haiekin, zergatik erabiltzaileek ez lukete root eskubiderik utzi behar eta nola konpondu Dockerfile-n bat ez datozen adierazleen arazoa.

Edukiontziko prozesu guztiak root erabiltzaile gisa exekutatuko dira, modu berezi batean zehazten ez baduzu behintzat. Hau oso erosoa dirudi, erabiltzaile honek ez duelako murrizketarik. Horregatik root gisa lan egitea gaizki dago segurtasunaren ikuspuntutik. Buru onean dagoen inork ez badu lan egiten tokiko ordenagailuan root eskubideekin, orduan askok exekutatzen dituzte prozesuak root azpian edukiontzietan.

Beti daude malwareak edukiontzitik ihes egin eta ordenagailu ostalarira sartzea ahalbidetuko duten akatsak. Okerrena suposatuz, ziurtatu behar dugu edukiontzi barruko prozesuak ostalari makinan eskubiderik ez duen erabiltzaile batek exekutatzen dituela.

Erabiltzaile bat sortzea

Erabiltzaile bat edukiontzi batean sortzea ez da desberdina Linux banaketetan sortzea. Hala ere, komandoak alda daitezke oinarrizko irudi desberdinetarako.

Debian oinarritutako banaketetarako, honako hau gehitu behar duzu Dockerfile-ra:

RUN groupadd --gid 2000 node 
  && useradd --uid 2000 --gid node --shell /bin/bash --create-home node

Alpetarrentzat:

RUN addgroup -g 2000 node 
    && adduser -u 2000 -G node -s /bin/sh -D node

Prozesuak erabiltzailearengandik exekutatzen

Ondorengo prozesu guztiak exekutatzeko UID 2000 duen erabiltzaile gisa, exekutatu:

USER 2000

Ondorengo prozesu guztiak nodoaren erabiltzaile gisa exekutatzeko, exekutatu:

USER node

Gehiago barrura dokumentazioa.

Muntatzeko bolumenak

Edukiontzi baten barruan bolumenak muntatzean, eman erabiltzaileari fitxategiak irakurtzeko eta/edo idazteko gaitasuna. Horretarako, fitxategira sartzeko baimen egokiak dituen edukiontziko erabiltzailearen eta edukiontzitik kanpoko erabiltzailearen UID (GID) bat etorri behar da. Kasu honetan, erabiltzaile-izenek ez dute axola.

Askotan Linux ordenagailu batean, erabiltzailearen UID eta GID 1000 berdinak dira. Identifikatzaile hauek ordenagailuaren lehen erabiltzaileari esleitzen zaizkio.

Zure identifikatzaileak aurkitzea erraza da:

id

Zure erabiltzaileari buruzko informazio osoa jasoko duzu.
Ordeztu adibideetako 2000 zure identifikatzailearekin eta dena ondo egongo da.

Erabiltzaile bati UID eta GID bat esleitzea

Erabiltzailea aldez aurretik sortu bazen, baina identifikatzaileak aldatu behar badituzu, honela egin dezakezu:

RUN usermod -u 1000 node 
  && groupmod -g 1000 node

Oinarri alpinoko irudia erabiltzen ari bazara, itzal paketea instalatu behar duzu:

RUN apk add —no-cache shadow

Erabiltzailearen IDa edukiontzi barruan pasatzea irudia eraikitzean

Zure IDa eta proiektuan lan egiten duten pertsona guztien IDak bat datoz, orduan zehaztu ID hau Dockerfile-n. Hala ere, askotan erabiltzailearen IDak ez datoz bat.

Nahi duzuna nola lortu ez dago berehala argi. Niretzat, hau izan zen Docker menderatzeko prozesuan zailena. Docker erabiltzaile asko ez dira konturatzen irudi baten bizitzan etapa desberdinak daudela. Lehenik eta behin, irudia Dockerfile bat erabiliz muntatzen da. Irudi batetik edukiontzi bat exekutatzen denean, Dockerfile ez da gehiago erabiltzen.

Erabiltzaileen sorrera irudia eraikitzean gertatu behar da. Gauza bera gertatzen da prozesuak noren arabera abiarazten diren erabiltzailea zehazteko. Horrek esan nahi du nolabait UID (GID) edukiontzi barruan pasatu behar dugula.

Zuzentarauak Dockerfile-n kanpoko aldagaiak erabiltzeko erabiltzen dira ENV и ARG. Zuzentarauen konparaketa zehatza Hemen.

Dockerfile

ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node 
  && groupmod -g $GID node

Docker-compose bidez argumentuak pasa ditzakezu honela:

Docker-idazteko

build:
  context: ./src/backend
  args:
    UID: 1000
    GID: 1000

PS Dockerren konplexutasun guztiak menderatzeko, ez da nahikoa dokumentazioa edo artikuluak irakurtzea. Asko praktikatu behar duzu, Dockerren sentsazioa lortu behar duzu.

Iturria: www.habr.com

Gehitu iruzkin berria