Mosebelisi ho Docker

Andrey Kopylov, CTO ea rona, e rata, e sebelisa ka mafolofolo le ho khothaletsa Docker. Sengoliloeng se secha, o hlalosa mokhoa oa ho theha basebelisi ho Docker. Mosebetsi o nepahetseng le bona, ke hobane'ng ha basebelisi ba sa lokela ho sala ba e-na le litokelo tsa metso le mokhoa oa ho rarolla bothata ba matšoao a sa lumellaneng ho Dockerfile.

Lits'ebetso tsohle tse ka har'a setshelo li tla sebetsa joalo ka mosebelisi oa motso, ntle le haeba u e hlalosa ka tsela e ikhethang. Sena se bonahala se le bonolo haholo, hobane mosebelisi enoa ha a na lithibelo. Ke ka lebaka lena ho sebetsa joalo ka motso ho fosahetse ho latela pono ea ts'ireletso. Haeba ha ho na motho ea nang le kelello e nepahetseng ea sebetsang khomphuteng ea lehae ka litokelo tsa metso, joale ba bangata ba tsamaisa lits'ebetso ka har'a lijana.

Ho lula ho na le likokoana-hloko tse tla lumella malware ho tsoa ka har'a setshelo ebe o kena komporong e amohelang. Ho nka hore ho hobe ka ho fetesisa, re tlameha ho etsa bonnete ba hore lits'ebetso ka har'a sets'oants'o li tsamaisoa ke mosebelisi ea se nang litokelo life kapa life mochining oa moamoheli.

Ho theha mosebelisi

Ho theha mosebelisi ka har'a setshelo ha ho fapane le ho e theha kabong ea Linux. Leha ho le joalo, litaelo li ka fapana bakeng sa litšoantšo tse fapaneng tsa motheo.

Bakeng sa liphallelo tse thehiloeng ho debian, o hloka ho kenyelletsa tse latelang ho Dockerfile:

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

Bakeng sa alpine:

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

Ho tsamaisa lits'ebetso ho tsoa ho mosebelisi

Ho tsamaisa lits'ebetso tsohle tse latelang joalo ka mosebelisi ea nang le UID 2000, matha:

USER 2000

Ho tsamaisa lits'ebetso tsohle tse latelang joalo ka mosebelisi oa node, matha:

USER node

Bala haholoanyane ho litokomane.

Ho phahamisa meqolo

Ha u kenya livolume ka har'a sets'oants'o, fa mosebelisi bokhoni ba ho bala le/kapa ho ngola lifaele. Ho etsa sena, UID (GID) ea mosebelisi ea ka har'a sets'oants'o le mosebelisi ea kantle ho sets'oants'o ea nang le tumello e nepahetseng ea ho fihlella faele e tlameha ho ts'oana. Tabeng ena, mabitso a basebelisi ha a na taba.

Hangata k'homphieutheng ea Linux, UID ea mosebedisi le GID li lekana le 1000. Litlhaloso tsena li abeloa mosebedisi oa pele oa khomphuta.

Ho bonolo ho fumana li-identifiers:

id

U tla fumana lintlha tse felletseng mabapi le mosebelisi oa hau.
Nka sebaka sa 2000 ho tsoa mehlala ka sesupo sa hau mme tsohle li tla loka.

Ho abela mosebelisi UID le GID

Haeba mosebelisi a entsoe pejana, empa o hloka ho fetola li-identifiers, o ka e etsa ka tsela ena:

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

Haeba u sebelisa setšoantšo sa setsi sa alpine, u lokela ho kenya sephutheloana sa moriti:

RUN apk add —no-cache shadow

Ho fetisa ID ea mosebelisi ka har'a setshelo ha u theha setšoantšo

Haeba ID ea hau le li-ID tsa batho bohle ba sebetsang morerong li tšoana, hlakisa feela ID ena ho Dockerfile. Leha ho le joalo, hangata li-ID tsa basebelisi ha li lumellane.

Tsela ea ho finyella seo u se batlang ha e hlake hang-hang. Ho 'na, ena e ne e le ntho e thata ka ho fetisisa ts'ebetsong ea ho tseba Docker. Basebelisi ba bangata ba li-docker ha ba hlokomele hore ho na le mekhahlelo e fapaneng bophelong ba setšoantšo. Taba ea pele, setšoantšo se bokelloa ho sebelisoa Dockerfile. Ha o tsamaisa setshelo ho tsoa setšoantšong, Dockerfile ha e sa sebelisoa.

Tlhahiso ea basebelisi e tlameha ho etsahala ha setšoantšo se hahiloe. Hoa sebetsa joalo ka ho khetholla mosebelisi eo lits'ebetso li qalisoang tlas'a bona. Sena se bolela hore ka tsela e itseng re tlameha ho fetisa UID (GID) ka har'a setshelo.

Litaelo li sebelisoa ho sebelisa mefuta e fapaneng ea kantle ho Dockerfile ENV и ARG. Papiso e qaqileng ea litaelo mona.

dockerfile

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

O ka fetisa likhang ka docker-compose ka tsela ena:

qobella

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

PS Ho tseba lintho tsohle tse rarahaneng tsa Docker, ha hoa lekana ho bala litokomane kapa lingoliloeng. O hloka ho ikoetlisa haholo, o hloka ho ikutloa ka Docker.

Source: www.habr.com

Eketsa ka tlhaloso