Onye ọrụ na Docker

Andrey Kopylov, CTO anyị, hụrụ n'anya, na-arụsi ọrụ ike ma na-akwalite Docker. N'ime edemede ọhụrụ, ọ kọwara otu esi emepụta ndị ọrụ na Docker. Ha na ha na-arụ ọrụ ziri ezi, gịnị kpatara na a gaghị ahapụ ndị ọrụ na ikike mgbọrọgwụ yana otu esi edozi nsogbu nke ihe ngosi ejikọtaghị na Dockerfile.

Usoro niile dị na akpa ga-agba ọsọ dị ka onye ọrụ mgbọrọgwụ, ọ gwụla ma ị kọwapụta ya n'ụzọ pụrụ iche. Nke a yiri nnọọ adaba, n'ihi na onye ọrụ a enweghị mgbochi. Nke a bụ ya mere na-arụ ọrụ dị ka mgbọrọgwụ adịghị mma site na nche nche. Ọ bụrụ na ọ nweghị onye nwere uche ziri ezi na-arụ ọrụ na kọmpụta mpaghara nwere ikike mgbọrọgwụ, mgbe ahụ, ọtụtụ usoro na-agba ọsọ n'okpuru mgbọrọgwụ na arịa.

A na-enwe chinchi mgbe niile ga-ekwe ka malware gbanarị n'akpa wee banye na kọmputa ndị ọbịa. Na-eche na ndị kasị njọ, anyị ga-hụ na Filiks n'ime akpa na-agba ọsọ site a ọrụ na-enweghị ihe ọ bụla ikike na host igwe.

Ịmepụta onye ọrụ

Ịmepụta onye ọrụ n'ime akpa adịghị iche na ịmepụta ya na nkesa Linux. Agbanyeghị, iwu ahụ nwere ike ịdị iche maka onyonyo ntọala dị iche iche.

Maka nkesa dabere na debian, ịkwesịrị ịgbakwunye ihe ndị a na Dockerfile:

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

Maka alpine:

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

Usoro na-agba ọsọ site na onye ọrụ

Iji mee usoro niile na-esote dị ka onye ọrụ na UID 2000, gbaa ọsọ:

USER 2000

Iji mee usoro niile na-esote dị ka onye ọrụ node, gbaa ọsọ:

USER node

Gụkwuo na akwụkwọ.

Mpịakọta ọnụ

Mgbe ị na-arị elu n'ime akpa, nye onye ọrụ ikike ịgụ na/ma ọ bụ ide faịlụ. Iji mee nke a, UID (GID) nke onye ọrụ na akpa na onye ọrụ na-abụghị akpa nke nwere ikike kwesịrị ekwesị iji nweta faịlụ ga-adabarịrị. N'okwu a, aha njirimara adịghị mkpa.

Ọtụtụ mgbe na kọmputa Linux, UID na GID onye ọrụ hà nhata 1000. A na-ekenye njirimara ndị a n'aka onye ọrụ mbụ nke kọmpụta ahụ.

Ịchọta ihe njirimara gị dị mfe:

id

Ị ga-enweta ozi zuru oke gbasara onye ọrụ gị.
Dochie 2000 site na ihe atụ na njirimara gị na ihe niile ga-adị mma.

Ịnye onye ọrụ UID na GID

Ọ bụrụ na emebere onye ọrụ na mbụ, mana ịchọrọ ịgbanwe ihe njirimara, ị nwere ike ime ya dịka nke a:

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

Ọ bụrụ na ị na-eji ihe onyonyo ntọala alpine, ịkwesịrị ịwụnye ngwugwu onyinyo:

RUN apk add —no-cache shadow

Na-agafe NJ onye ọrụ n'ime akpa mgbe ị na-ewu ihe onyonyo a

Ọ bụrụ na NJ gị na NJ nke ndị niile na-arụ ọrụ na ngo dakọtara, mgbe ahụ dị nnọọ ezipụta NJ a na Dockerfile. Agbanyeghị, ọtụtụ mgbe ID onye ọrụ anaghị adaba.

Otu esi enweta ihe ị chọrọ abụghị ozugbo doro anya. Maka m, nke a bụ ihe kacha sie ike na usoro nke ịmụta Docker. Ọtụtụ ndị ọrụ docker anaghị aghọta na enwere usoro dị iche iche na ndụ ihe onyonyo. Nke mbụ, a na-agbakọta onyonyo a site na iji Dockerfile. Mgbe ị na-ebu akpa site na onyonyo, anaghịzi eji Dockerfile.

Ịmepụta onye ọrụ ga-emerịrị mgbe arụrụ onyonyo a. Otu ihe ahụ na-emetụta ikpebi onye ọrụ n'okpuru onye a na-ewepụta usoro. Nke a pụtara na anyị ga-agaferịrị UID (GID) n'ime akpa ahụ.

A na-eji ntuziaka maka iji mgbanwe mpụga na Dockerfile ENV и ARG. Ntụnyere ntuziaka zuru ezu ebe a.

dockerfile

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

Ị nwere ike nyefee arụmụka site na docker-dede dị ka nke a:

docker-ide

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

PS Iji mata ihe mgbagwoju anya niile nke Docker, ezughị ezu ịgụ akwụkwọ ma ọ bụ akụkọ. Ịkwesịrị ịme ọtụtụ ihe, ịkwesịrị inwe mmetụta maka Docker.

isi: www.habr.com

Tinye a comment