Tus neeg siv hauv Docker

Andrey Kopylov, peb CTO, hlub, nquag siv thiab txhawb Docker. Hauv tsab xov xwm tshiab, nws piav qhia yuav ua li cas los tsim cov neeg siv hauv Docker. Ua haujlwm raug nrog lawv, vim li cas cov neeg siv yuav tsum tsis txhob sab laug nrog cov cai hauv paus thiab yuav ua li cas los daws qhov teeb meem ntawm qhov ntsuas tsis sib haum hauv Dockerfile.

Tag nrho cov txheej txheem hauv lub thawv yuav khiav raws li tus neeg siv hauv paus, tshwj tsis yog tias koj qhia nws hauv txoj kev tshwj xeeb. Qhov no zoo li yooj yim heev, vim tias tus neeg siv no tsis muaj kev txwv. Qhov no yog vim li cas ua haujlwm raws li hauv paus yog tsis ncaj ncees lawm los ntawm kev ruaj ntseg pom. Yog tias tsis muaj leej twg hauv lawv lub siab zoo ua haujlwm ntawm lub computer hauv zos nrog cov cai hauv paus, ces ntau cov txheej txheem khiav hauv paus hauv cov ntim.

Muaj ib txwm kab laum uas yuav tso cai rau malware kom khiav tawm ntawm lub thawv thiab nkag mus rau lub khoos phis tawj tswj hwm. Piv txwv tias qhov phem tshaj plaws, peb yuav tsum xyuas kom meej tias cov txheej txheem hauv lub thawv yog khiav los ntawm tus neeg siv uas tsis muaj cai ntawm lub tshuab host.

Tsim tus neeg siv

Tsim tus neeg siv hauv lub thawv tsis txawv ntawm kev tsim nws hauv Linux faib. Txawm li cas los xij, cov lus txib yuav txawv rau cov duab sib txawv.

Rau debian-raws li kev faib tawm, koj yuav tsum tau ntxiv cov hauv qab no rau Dockerfile:

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

Rau alpine:

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

Khiav cov txheej txheem los ntawm tus neeg siv

Txhawm rau khiav tag nrho cov txheej txheem tom ntej raws li tus neeg siv nrog UID 2000, khiav:

USER 2000

Txhawm rau khiav tag nrho cov txheej txheem tom ntej raws li tus neeg siv node, khiav:

USER node

Ntau qhov hauv cov ntaub ntawv.

Mounting ntim

Thaum mounting ntim hauv ib lub thawv, muab tus neeg siv lub peev xwm los nyeem thiab / lossis sau cov ntaub ntawv. Txhawm rau ua qhov no, UID (GID) ntawm tus neeg siv hauv lub thawv thiab tus neeg siv sab nraum lub thawv uas muaj kev tso cai tsim nyog nkag mus rau cov ntaub ntawv yuav tsum sib phim. Hauv qhov no, usernames tsis muaj teeb meem.

Feem ntau ntawm lub computer Linux, tus neeg siv UID thiab GID yog sib npaug rau 1000. Cov cim no tau muab rau thawj tus neeg siv ntawm lub computer.

Nrhiav kom paub koj tus lej cim yog yooj yim:

id

Koj yuav tau txais cov ntaub ntawv qhia txog koj tus neeg siv.
Hloov 2000 los ntawm cov piv txwv nrog koj tus lej cim thiab txhua yam yuav zoo.

Muab UID thiab GID rau tus neeg siv

Yog tias tus neeg siv tau tsim yav dhau los, tab sis koj yuav tsum hloov pauv tus cim, koj tuaj yeem ua nws li no:

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

Yog tias koj siv cov duab alpine puag, koj yuav tsum tau nruab cov duab ntxoov ntxoo pob:

RUN apk add β€”no-cache shadow

Hla tus neeg siv ID hauv lub thawv thaum tsim cov duab

Yog tias koj tus ID thiab tus IDs ntawm txhua tus neeg ua haujlwm ntawm qhov project match, ces tsuas yog qhia tus ID no hauv Dockerfile. Txawm li cas los xij, feem ntau cov neeg siv ID tsis sib xws.

Yuav ua li cas kom ua tiav qhov koj xav tau yog tsis meej tam sim ntawd. Rau kuv, qhov no yog qhov nyuaj tshaj plaws hauv tus txheej txheem ntawm kev paub Docker. Ntau tus neeg siv docker tsis paub tias muaj ntau theem hauv lub neej ntawm cov duab. Ua ntej, cov duab tau sib sau ua ke siv Dockerfile. Thaum khiav lub thawv los ntawm ib daim duab, Dockerfile tsis siv lawm.

Cov neeg siv tsim yuav tsum tshwm sim thaum cov duab tsim. Tib yam siv rau kev txiav txim siab tus neeg siv nyob rau hauv uas cov txheej txheem tau pib. Qhov no txhais tau hais tias peb yuav tsum dhau qhov UID (GID) hauv lub thawv.

Cov lus qhia yog siv los siv lwm qhov sib txawv hauv Dockerfile ENV ΠΈ ARG. Cov ntsiab lus sib piv ntawm cov lus qhia S, SΡ“S,.

Dockerfile

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

Koj tuaj yeem hla kev sib cav ntawm docker-compose zoo li no:

docker-compose

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

PS Txhawm rau paub txhua qhov kev tsis sib haum xeeb ntawm Docker, nws tsis txaus los nyeem cov ntaub ntawv lossis cov ntawv. Koj yuav tsum tau xyaum ntau, koj yuav tsum tau txais kev xav rau Docker.

Tau qhov twg los: www.hab.com

Ntxiv ib saib