Bydd yr holl brosesau yn y cynhwysydd yn rhedeg fel y defnyddiwr gwraidd, oni bai eich bod yn ei nodi mewn ffordd arbennig. Mae hyn yn ymddangos yn gyfleus iawn, oherwydd nid oes gan y defnyddiwr hwn unrhyw gyfyngiadau. Dyma pam mae gweithio fel gwraidd yn anghywir o safbwynt diogelwch. Os nad oes unrhyw un yn eu iawn bwyll yn gweithio ar y cyfrifiadur lleol gyda hawliau gwraidd, yna mae llawer yn rhedeg prosesau o dan wraidd mewn cynwysyddion.
Mae yna fygiau bob amser a fydd yn caniatΓ‘u i malware ddianc o'r cynhwysydd a mynd ar y cyfrifiadur gwesteiwr. Gan dybio y gwaethaf, rhaid inni sicrhau bod prosesau y tu mewn i'r cynhwysydd yn cael eu rhedeg gan ddefnyddiwr nad oes ganddo unrhyw hawliau ar y peiriant gwesteiwr.
Creu defnyddiwr
Nid yw creu defnyddiwr mewn cynhwysydd yn ddim gwahanol i'w greu mewn dosbarthiadau Linux. Fodd bynnag, gall y gorchmynion amrywio ar gyfer gwahanol ddelweddau sylfaen.
Ar gyfer dosbarthiadau sy'n seiliedig ar debian, mae angen ichi ychwanegu'r canlynol at y Dockerfile:
RUN groupadd --gid 2000 node
&& useradd --uid 2000 --gid node --shell /bin/bash --create-home node
Ar gyfer alpaidd:
RUN addgroup -g 2000 node
&& adduser -u 2000 -G node -s /bin/sh -D node
Prosesau rhedeg gan y defnyddiwr
I redeg yr holl brosesau dilynol fel defnyddiwr gyda UID 2000, rhedwch:
USER 2000
I redeg yr holl brosesau dilynol fel defnyddiwr y nod, rhedwch:
USER node
Mwy i mewn
Cyfrolau mowntio
Wrth osod cyfrolau y tu mewn i gynhwysydd, rhowch y gallu i'r defnyddiwr ddarllen a/neu ysgrifennu ffeiliau. I wneud hyn, rhaid i UID (GID) y defnyddiwr yn y cynhwysydd a'r defnyddiwr y tu allan i'r cynhwysydd sydd Γ’'r caniatΓ’d priodol i gael mynediad i'r ffeil gyfateb. Yn yr achos hwn, nid yw enwau defnyddwyr o bwys.
Yn aml ar gyfrifiadur Linux, mae UID defnyddiwr a GID yn hafal i 1000. Mae'r dynodwyr hyn yn cael eu neilltuo i ddefnyddiwr cyntaf y cyfrifiadur.
Mae dod o hyd i'ch dynodwyr yn hawdd:
id
Byddwch yn derbyn gwybodaeth gynhwysfawr am eich defnyddiwr.
Amnewid 2000 o'r enghreifftiau gyda'ch dynodwr a bydd popeth yn iawn.
Neilltuo UID a GID i ddefnyddiwr
Os cafodd y defnyddiwr ei greu o'r blaen, ond mae angen i chi newid y dynodwyr, gallwch chi ei wneud fel hyn:
RUN usermod -u 1000 node
&& groupmod -g 1000 node
Os ydych chi'n defnyddio'r ddelwedd sylfaen alpaidd, mae angen i chi osod y pecyn cysgodol:
RUN apk add βno-cache shadow
Pasio'r ID defnyddiwr y tu mewn i'r cynhwysydd wrth adeiladu'r ddelwedd
Os yw'ch ID ac IDau'r holl bobl sy'n gweithio ar y prosiect yn cyfateb, yna nodwch yr ID hwn yn y Dockerfile. Fodd bynnag, yn aml nid yw'r IDau defnyddiwr yn cyfateb.
Nid yw sut i gyflawni'r hyn yr ydych ei eisiau yn glir ar unwaith. I mi, dyma oedd y peth anoddaf yn y broses o feistroli Docker. Nid yw llawer o ddefnyddwyr docwyr yn sylweddoli bod yna wahanol gamau ym mywyd delwedd. Yn gyntaf, mae'r ddelwedd yn cael ei chydosod gan ddefnyddio Dockerfile. Wrth redeg cynhwysydd o ddelwedd, ni ddefnyddir y Dockerfile mwyach.
Rhaid creu defnyddiwr pan fydd y ddelwedd yn cael ei hadeiladu. Mae'r un peth yn berthnasol i benderfynu ar y defnyddiwr y caiff prosesau eu lansio oddi tanynt. Mae hyn yn golygu bod yn rhaid i ni rywsut basio'r UID (GID) y tu mewn i'r cynhwysydd.
Defnyddir cyfarwyddebau i ddefnyddio newidynnau allanol yn y Dockerfile
Dockerfile
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node
&& groupmod -g $GID node
Gallwch chi basio dadleuon trwy docker-compose fel hyn:
cyfansoddwr dociau
build:
context: ./src/backend
args:
UID: 1000
GID: 1000
PS Er mwyn meistroli holl gymhlethdodau Docker, nid yw'n ddigon darllen y dogfennau na'r erthyglau. Mae angen i chi ymarfer llawer, mae angen i chi gael teimlad o Docker.
Ffynhonnell: hab.com