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
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
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