Mpampiasa ao amin'ny Docker

Andrey Kopylov, ny CTO anay dia tia, mampiasa ary mampiroborobo ny Docker. Ao amin'ny lahatsoratra vaovao, manazava ny fomba hamoronana mpampiasa ao amin'ny Docker izy. Asa tsara miaraka amin'izy ireo, nahoana ny mpampiasa no tsy tokony havela amin'ny zo fototra sy ny fomba hamahana ny olan'ny tondro tsy mifanaraka amin'ny Dockerfile.

Ny dingana rehetra ao amin'ny kaontenera dia handeha amin'ny maha-mpampiasa faka azy, raha tsy mamaritra azy amin'ny fomba manokana. Toa tena mety izany, satria tsy misy fameperana ity mpampiasa ity. Izany no mahatonga ny fiasana amin'ny maha-root tsy mety amin'ny lafiny fiarovana. Raha tsy misy olona ao an-tsainy miasa amin'ny solosaina eo an-toerana miaraka amin'ny zon'ny faka, dia maro no mandeha amin'ny alΓ lan'ny faka ao anaty container.

Misy foana ny bibikely mamela ny malware hiala amin'ny kaontenera ary hiditra ao amin'ny solosaina mpampiantrano. Raha heverina fa ny ratsy indrindra dia tsy maintsy miantoka isika fa mpampiasa iray tsy manana zo amin'ny milina fampiantranoana no tantanin'ireo dingana ao anatin'ny kaontenera.

Mamorona mpampiasa

Ny famoronana mpampiasa ao anaty container dia tsy misy hafa amin'ny famoronana azy amin'ny fizarana Linux. Na izany aza, mety miovaova ny baiko ho an'ny sary fototra samihafa.

Ho an'ny fizarana mifototra amin'ny debian dia mila ampidirinao ao amin'ny Dockerfile ireto manaraka ireto:

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

Ho an'ny alpine:

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

Fampandehanana dingana avy amin'ny mpampiasa

Mba hampandehanana ny dingana manaraka rehetra amin'ny maha mpampiasa UID 2000, mandehana:

USER 2000

Mba hampandehanana ny dingana manaraka rehetra amin'ny maha-mpampiasa node, mandehana:

USER node

Bebe kokoa amin'ny tahirin-kevitra.

Fametrahana volume

Rehefa mametraka boky ao anaty fitoeran-javatra iray dia omeo fahafahana mamaky sy/na manoratra rakitra ny mpampiasa. Mba hanaovana izany dia tsy maintsy mifanitsy ny UID (GID) an'ny mpampiasa ao anaty container sy ny mpampiasa ivelan'ny container izay manana alalana hidirana amin'ilay rakitra. Amin'ity tranga ity, ny solonanarana dia tsy maninona.

Matetika amin'ny solosaina Linux dia mitovy amin'ny 1000 ny UID sy GID an'ny mpampiasa iray. Ireo famantarana ireo dia nomena ny mpampiasa voalohany ny solosaina.

Mora ny mahita ny famantarana anao:

id

Hahazo fampahalalana feno momba ny mpampiasa anao ianao.
Soloy ny 2000 amin'ny ohatra amin'ny famantarana anao dia ho tsara ny zava-drehetra.

Manendry UID sy GID ho an'ny mpampiasa iray

Raha noforonina teo aloha ny mpampiasa, fa mila manova ny famantarana ianao dia azonao atao toy izao:

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

Raha mampiasa ny sary fototra alpine ianao dia mila mametraka ny fonosana aloka:

RUN apk add β€”no-cache shadow

Mandalo ny ID mpampiasa ao anaty fitoeran-javatra rehefa manamboatra ny sary

Raha mifanandrify ny ID-nao sy ny kaodin'ny olona rehetra miasa amin'ny tetikasa, dia apetraho ao amin'ny Dockerfile fotsiny io ID io. Na izany aza, matetika ny mpampiasa ID dia tsy mifanaraka.

Ny fomba hahazoana izay tadiavinao dia tsy mazava avy hatrany. Ho ahy dia ity no zavatra sarotra indrindra tamin'ny dingan'ny fifehezana ny Docker. Maro amin'ireo mpampiasa docker no tsy mahatsapa fa misy dingana samihafa amin'ny fiainan'ny sary iray. Voalohany, ny sary dia miangona amin'ny fampiasana Dockerfile. Rehefa mitantana fitoeran-javatra avy amin'ny sary iray dia tsy ampiasaina intsony ny Dockerfile.

Ny famoronana mpampiasa dia tsy maintsy mitranga rehefa voaorina ny sary. Toy izany koa ny amin'ny famaritana ny mpampiasa izay atomboka ny fizotrany. Midika izany fa tsy maintsy mandalo ny UID (GID) ao anaty container isika.

Ny torolΓ lana dia ampiasaina amin'ny fampiasana variables ivelany ao amin'ny Dockerfile Env ΠΈ ARG. Fampitahana amin'ny antsipiriany ny torolΓ lana eto.

dockerfile

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

Azonao atao ny mampita hevitra amin'ny alΓ lan'ny docker-compose toy izao:

docker-Mamboatra

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

PS Mba hifehezana ny pitsopitsony rehetra an'ny Docker dia tsy ampy ny mamaky ny antontan-taratasy na lahatsoratra. Mila manao fanazaran-tena betsaka ianao, mila mahatsapa an'i Docker.

Source: www.habr.com

Add a comment