Käyttäjä Dockerissa

Andrei Kopylov, teknologiajohtajamme, rakastaa, käyttää aktiivisesti ja mainostaa Dockeria. Uudessa artikkelissa hän selittää, kuinka Dockerissa luodaan käyttäjiä. Oikea työskentely heidän kanssaan, miksi käyttäjille ei pitäisi jättää pääkäyttäjän oikeuksia ja kuinka ratkaista Docker-tiedoston yhteensopimattomien indikaattoreiden ongelma.

Kaikki säilön prosessit toimivat pääkäyttäjänä, ellet määritä sitä erityisellä tavalla. Tämä vaikuttaa erittäin kätevältä, koska tällä käyttäjällä ei ole rajoituksia. Tästä syystä pääkäyttäjänä työskentely on turvallisuuden kannalta väärin. Jos kukaan täysillä ei työskentele paikallisella tietokoneella pääkäyttäjän oikeuksin, monet suorittavat prosesseja rootin alaisuudessa säilöissä.

Aina löytyy bugeja, jotka sallivat haittaohjelmien paeta säiliöstä ja päästä isäntätietokoneeseen. Pahinta oletetaan, että meidän on varmistettava, että kontin sisällä olevia prosesseja ajaa käyttäjä, jolla ei ole oikeuksia isäntäkoneeseen.

Käyttäjän luominen

Käyttäjän luominen säilössä ei eroa sen luomisesta Linux-jakeluissa. Komennot voivat kuitenkin vaihdella eri peruskuvissa.

Debian-pohjaisissa jakeluissa sinun on lisättävä Docker-tiedostoon seuraava:

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

Alpeille:

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

Prosessien suorittaminen käyttäjältä

Suorita kaikki seuraavat prosessit käyttäjänä, jolla on UID 2000, suorittamalla:

USER 2000

Suorita kaikki seuraavat prosessit solmun käyttäjänä suorittamalla:

USER node

Lue lisää dokumentointi.

Asennustilavuudet

Kun asennat taltioita säiliöön, anna käyttäjälle mahdollisuus lukea ja/tai kirjoittaa tiedostoja. Tätä varten säilön käyttäjän UID:n (GID) ja säilön ulkopuolisen käyttäjän, jolla on tarvittavat käyttöoikeudet tiedostoon, on vastattava toisiaan. Tässä tapauksessa käyttäjätunnuksilla ei ole väliä.

Usein Linux-tietokoneissa käyttäjän UID ja GID ovat 1000. Nämä tunnisteet määritetään tietokoneen ensimmäiselle käyttäjälle.

Tunnisteiden löytäminen on helppoa:

id

Saat kattavat tiedot käyttäjästäsi.
Korvaa esimerkeistä 2000 tunnisteellasi ja kaikki on hyvin.

UID:n ja GID:n määrittäminen käyttäjälle

Jos käyttäjä on luotu aiemmin, mutta sinun on muutettava tunnisteita, voit tehdä sen seuraavasti:

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

Jos käytät alppipohjaista kuvaa, sinun on asennettava shadow-paketti:

RUN apk add —no-cache shadow

Käyttäjätunnuksen välittäminen säilön sisällä kuvaa rakennettaessa

Jos tunnuksesi ja kaikkien projektissa työskentelevien henkilöiden tunnukset täsmäävät, määritä tämä tunnus Docker-tiedostossa. Usein käyttäjätunnukset eivät kuitenkaan täsmää.

Se, kuinka saavuttaa haluamasi, ei ole heti selvää. Minulle tämä oli vaikein asia Dockerin hallitsemisessa. Monet telakointiaseman käyttäjät eivät ymmärrä, että kuvan elämässä on erilaisia ​​vaiheita. Ensin kuva kootaan Docker-tiedoston avulla. Kun säilöä suoritetaan kuvasta, Docker-tiedostoa ei enää käytetä.

Käyttäjän luomisen on tapahduttava kuvan luomisen yhteydessä. Sama koskee sen käyttäjän määrittämistä, jonka alaisuudessa prosessit käynnistetään. Tämä tarkoittaa, että meidän on jotenkin välitettävä UID (GID) kontin sisällä.

Direktiivejä käytetään ulkoisten muuttujien käyttämiseen Docker-tiedostossa ENV и ARG. Yksityiskohtainen direktiivien vertailu täällä.

Dockerfile

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

Voit välittää argumentteja Docker-Composen kautta seuraavasti:

docker-compose

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

PS Dockerin kaikkien hienouksien hallitsemiseksi ei riitä, että luet dokumentaatiota tai artikkeleita. Sinun täytyy harjoitella paljon, sinun täytyy saada tunne Dockerista.

Lähde: will.com

Lisää kommentti