Kaiwhakamahi i Docker

Andrey Kopylov, to tatou CTO, aroha, kaha whakamahi me te whakatairanga Docker. I roto i tetahi tuhinga hou, ka whakamarama ia me pehea te hanga kaiwhakamahi i Docker. Te mahi tika ki a raatau, he aha te take e kore ai e waiho nga kaiwhakamahi me nga mana pakiaka me pehea te whakaoti i te raru o nga tohu tohu i roto i te Dockerfile.

Ko nga tukanga katoa i roto i te ipu ka rere hei kaiwhakamahi pakiaka, mena ka tohua e koe i tetahi huarahi motuhake. He tino watea tenei, na te mea kaore he here o tenei kaiwhakamahi. Koinei te take he he te mahi hei pakiaka mai i te tirohanga haumarutanga. Mena karekau he tangata tika e mahi ana i runga i te rorohiko o te rohe me nga mana pakiaka, he maha nga whakahaere i raro i te pakiaka i roto i nga ipu.

I nga wa katoa he ngarara ka taea e te malware te mawhiti mai i te ipu ka uru ki te rorohiko kaihautu. Ki te whakaaro ko te mea kino rawa atu, me whakarite maatau kei te whakahaerehia nga tikanga o roto o te ipu e tetahi kaiwhakamahi kaore he mana ki runga i te miihini manaaki.

Te hanga kaiwhakamahi

Ko te hanga i tetahi kaiwhakamahi i roto i te ipu kaore he rereke mai i te hanga i roto i nga tohatoha Linux. Heoi, ka rereke pea nga whakahau mo nga whakaahua turanga rereke.

Mo nga tohatoha-a-debian, me taapiri e koe nga mea e whai ake nei ki te Dockerfile:

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

Mo te alpine:

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

Te whakahaere i nga tukanga mai i te kaiwhakamahi

Hei whakahaere i nga tukanga ka whai ake hei kaiwhakamahi UID 2000, whakahaere:

USER 2000

Hei whakahaere i nga tukanga ka whai ake hei kaiwhakamahi node, whakahaere:

USER node

He maha ake i roto i tuhinga.

Whakanuia nga pukapuka

Ina whakairihia nga pukapuka ki roto i te ipu, hoatu ki te kaiwhakamahi te kaha ki te panui me te tuhi i nga konae. Hei mahi i tenei, me taurite te UID (GID) o te kaiwhakamahi i roto i te ipu me te kaiwhakamahi kei waho o te ipu kei a ia nga whakaaetanga tika ki te uru ki te konae. I tenei take, kaore he mea nui nga ingoa ingoa.

I te nuinga o nga wa i runga i te rorohiko Linux, ko te UID me te GID o te kaiwhakamahi he rite ki te 1000. Ko enei tohu ka tohua ki te kaiwhakamahi tuatahi o te rorohiko.

He ngawari te rapu i o tohu:

id

Ka whiwhi koe i nga korero matawhānui mo to kaiwhakamahi.
Whakakapihia te 2000 mai i nga tauira me to tautuhi ka pai nga mea katoa.

Te tuku UID me te GID ki tetahi kaiwhakamahi

Mena i hangaia te kaiwhakamahi i mua, engari me whakarereke e koe nga tohu tohu, ka taea e koe te mahi penei:

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

Mena kei te whakamahi koe i te ahua o te papa alpine, me whakauru koe i te kete atarangi:

RUN apk add —no-cache shadow

Te tuku i te ID kaiwhakamahi ki roto i te ipu i te wa e hanga ana te ahua

Mena ka rite to ID me nga TT o nga tangata katoa e mahi ana i te kaupapa, tohua tenei ID ki te Dockerfile. Heoi, i te nuinga o nga wa kaore nga ID kaiwhakamahi e taurite.

Me pehea te whakatutuki i nga mea e hiahia ana koe kaore i te marama tonu. Ki ahau nei, koinei te mea tino uaua i roto i te mahi whakahaere i a Docker. He maha nga kaiwhakamahi docker kaore i te mohio he rereke nga waahanga o te oranga o te ahua. Tuatahi, ka kohia te ahua ma te whakamahi i te Dockerfile. I te wa e whakahaere ana i tetahi ipu mai i te ahua, kua kore e whakamahia te Dockerfile.

Ko te hanga kaiwhakamahi me puta i te wa e hangaia ana te ahua. Ka pa ano ki te whakatau i te kaiwhakamahi kei raro i a ia nga mahi ka whakarewahia. Ko te tikanga me tuku te UID (GID) ki roto i te ipu.

Ka whakamahia nga tohutohu hei whakamahi i nga taurangi o waho i te Dockerfile ENV и ARG. Te whakatairitenga taipitopito o nga tohutohu konei.

Dockerfile

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

Ka taea e koe te tuku tautohetohe ma te docker-compose penei:

te mahi a-toka

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

PS Kia mohio ai koe ki nga ahuatanga katoa o Docker, kaore e ranea ki te panui i nga tuhinga me nga tuhinga. Me kaha koe ki te parakatihi, me whai whakaaro koe mo Docker.

Source: will.com

Tāpiri i te kōrero