, ús CTO, hâldt fan, aktyf brûkt en befoarderet Docker. Yn in nij artikel ferklearret hy hoe't jo brûkers meitsje kinne yn Docker. Korrekte wurk mei har, wêrom't brûkers net mei rootrjochten moatte wurde oerlitten en hoe't jo it probleem oplosse kinne fan net-oerienkommende yndikatoaren yn 'e Dockerfile.
Alle prosessen yn 'e kontener sille rinne as de root-brûker, útsein as jo it op in spesjale manier oantsjutte. Dit liket heul handich, om't dizze brûker gjin beheiningen hat. Dit is de reden dat wurkjen as root ferkeard is út in feiligenspunt. As gjinien yn har goede geast wurket op 'e lokale kompjûter mei rootrjochten, dan rinne in protte prosessen ûnder root yn konteners.
D'r binne altyd bugs wêrtroch malware út 'e kontener kin ûntkomme en op' e hostkomputer komme. As wy it slimste oannimme, moatte wy derfoar soargje dat prosessen binnen de kontener wurde útfierd troch in brûker dy't gjin rjochten hat op 'e hostmasine.
It meitsjen fan in brûker
It meitsjen fan in brûker yn in kontener is net oars as it meitsjen yn Linux-distribúsjes. De kommando's kinne lykwols ferskille foar ferskate basisôfbyldings.
Foar debian-basearre distribúsjes moatte jo it folgjende tafoegje oan it Dockerfile:
RUN groupadd --gid 2000 node
&& useradd --uid 2000 --gid node --shell /bin/bash --create-home nodeFoar alpine:
RUN addgroup -g 2000 node
&& adduser -u 2000 -G node -s /bin/sh -D node
It útfieren fan prosessen fan 'e brûker
Om alle folgjende prosessen út te fieren as brûker mei UID 2000, útfiere:
USER 2000Om alle folgjende prosessen út te fieren as de node-brûker, útfiere:
USER nodeLês mear yn .
Montage folume
By it montearjen fan folumes yn in kontener, jouwe de brûker de mooglikheid om bestannen te lêzen en/of te skriuwen. Om dit te dwaan, moatte de UID (GID) fan 'e brûker yn' e kontener en de brûker bûten de kontener dy't de passende tagongsrjochten hat om tagong te krijen ta it bestân oerienkomme. Yn dit gefal dogge brûkersnammen net út.
Faak op in Linux kompjûter, in brûker syn UID en GID binne gelyk oan 1000. Dizze identifiers wurde tawiisd oan de earste brûker fan de kompjûter.
It finen fan jo identifiers is maklik:
idJo krije wiidweidige ynformaasje oer jo brûker.
Ferfange 2000 út 'e foarbylden mei jo identifier en alles sil goed wêze.
In UID en GID tawize oan in brûker
As de brûker earder makke is, mar jo moatte de identifiers feroarje, kinne jo it sa dwaan:
RUN usermod -u 1000 node
&& groupmod -g 1000 node
As jo de alpine basisôfbylding brûke, moatte jo it skaadpakket ynstallearje:
RUN apk add —no-cache shadowIt trochjaan fan de brûkers-ID binnen de kontener by it bouwen fan de ôfbylding
As jo ID en de ID's fan alle minsken dy't oan it projekt wurkje oerienkomme, spesifisearje dan gewoan dizze ID yn 'e Dockerfile. Faak komme de brûkers-ID's lykwols net oerien.
Hoe te berikken wat jo wolle is net fuortendaliks dúdlik. Foar my wie dit it dreechste ding yn it proses fan behearsking fan Docker. In protte docker-brûkers realisearje net dat d'r ferskate stadia binne yn it libben fan in ôfbylding. Earst wurdt de ôfbylding gearstald mei in Dockerfile. By it útfieren fan in kontener fan in ôfbylding, wurdt de Dockerfile net mear brûkt.
Brûkerskepping moat foarkomme as de ôfbylding is boud. Itselde jildt foar it bepalen fan de brûker ûnder wa't prosessen wurde lansearre. Dit betsjut dat wy op ien of oare manier de UID (GID) binnen de kontener moatte trochjaan.
Rjochtlinen wurde brûkt om eksterne fariabelen te brûken yn 'e Dockerfile и . Detaillearre ferliking fan rjochtlinen .
dockerfile
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node
&& groupmod -g $GID node
Jo kinne arguminten trochjaan fia docker-compose sa:
docker-komponearje
build:
context: ./src/backend
args:
UID: 1000
GID: 1000
PS Om alle intricacies fan Docker te behearskjen, is it net genôch om de dokumintaasje of artikels te lêzen. Jo moatte in protte oefenje, jo moatte in gefoel krije foar Docker.
Boarne: www.habr.com
